{
  "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": "              <span className={styles.permissionLabel}>Delete</span>"
    },
    {
      "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": "          <label className={styles.formLabel}>Objekt auswählen</label>"
    },
    {
      "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": "            <option value=\"\">-- Global (alle Objekte) --</option>"
    },
    {
      "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": "            <div className={styles.matrixGroup}>Eigene (m)</div>"
    },
    {
      "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": "            <div className={styles.matrixGroup}>Gruppe (g)</div>"
    },
    {
      "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": "            <div className={styles.matrixGroup}>Alle (a)</div>"
    },
    {
      "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: <FaTable />, 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: <FaDesktop />, 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: <FaServer />, 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: <FaCode />, 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": "          <span>Lade Berechtigungen...</span>"
    },
    {
      "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": "            <th className={styles.colObject}>Objekt (Dot-Notation)</th>"
    },
    {
      "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": "                <th className={styles.colGroupHeader} colSpan={4}>Eigene (m)</th>"
    },
    {
      "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": "                <th className={styles.colGroupHeader} colSpan={4}>Gruppe (g)</th>"
    },
    {
      "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": "                <th className={styles.colGroupHeader} colSpan={4}>Alle (a)</th>"
    },
    {
      "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": "              <th title=\"Create\">C</th>"
    },
    {
      "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": "              <th title=\"Read\">R</th>"
    },
    {
      "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": "              <th title=\"Update\">U</th>"
    },
    {
      "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": "              <th title=\"Delete\">D</th>"
    },
    {
      "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": "              <th title=\"Create\">C</th>"
    },
    {
      "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": "              <th title=\"Read\">R</th>"
    },
    {
      "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": "              <th title=\"Update\">U</th>"
    },
    {
      "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": "              <th title=\"Delete\">D</th>"
    },
    {
      "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": "              <th title=\"Create\">C</th>"
    },
    {
      "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": "              <th title=\"Read\">R</th>"
    },
    {
      "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": "              <th title=\"Update\">U</th>"
    },
    {
      "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": "              <th title=\"Delete\">D</th>"
    },
    {
      "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": "            <span className={styles.jsonTitle}>JSON Preview (Fallback)</span>"
    },
    {
      "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": "              <span className={styles.jsonSize}>Raw content</span>"
    },
    {
      "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": "          <p>Preview not supported for this file type. Please download the file to view it.</p>"
    },
    {
      "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": "                            <span className={styles.jsonValue}>Error: Invalid nested data</span>"
    },
    {
      "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": "        <p>Fehler beim Laden der PDF: {error}</p>"
    },
    {
      "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": "        <p>PDF wird geladen...</p>"
    },
    {
      "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": "          <span className={styles.textTitle}>Text Preview</span>"
    },
    {
      "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": "            <p>Lade Node-Typen...</p>"
    },
    {
      "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<string, string> = { 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": "          <option value=\"\">— Workflow laden —</option>"
    },
    {
      "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": "          <button type=\"button\" className={styles.retryButton} onClick={onToggleChat} title=\"Workspace-Panel (Chats, Dateien, Quellen)\">"
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 285,
      "column": 30,
      "kind": "jsx_text",
      "text": "— Aktuelle —",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"\">— Aktuelle —</option>"
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 310,
      "column": 21,
      "kind": "string_literal",
      "text": "Version veröffentlichen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Version veröffentlichen\""
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 323,
      "column": 21,
      "kind": "string_literal",
      "text": "Veröffentlichung zurücknehmen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Veröffentlichung zurücknehmen\""
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 336,
      "column": 21,
      "kind": "string_literal",
      "text": "Version archivieren",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Version archivieren\""
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 349,
      "column": 21,
      "kind": "string_literal",
      "text": "Neuen Entwurf erstellen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Neuen Entwurf erstellen\""
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 379,
      "column": 15,
      "kind": "jsx_text",
      "text": "✓ Ausführung abgeschlossen.",
      "context": "between tags, user-visible text node",
      "line_content": "            <>✓ Ausführung abgeschlossen.</>"
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 382,
      "column": 50,
      "kind": "jsx_text",
      "text": "Workflows & Tasks",
      "context": "between tags, user-visible text node",
      "line_content": "              ⏸ Workflow pausiert. Öffne <strong>Workflows & Tasks</strong> in der Sidebar, um den"
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 386,
      "column": 15,
      "kind": "jsx_text",
      "text": "✗ {executeResult.error ?? 'Unbekannter Fehler'}",
      "context": "between tags, user-visible text node",
      "line_content": "            <>✗ {executeResult.error ?? 'Unbekannter Fehler'}</>"
    },
    {
      "file": "src/components/FlowEditor/editor/CanvasHeader.tsx",
      "line": 386,
      "column": 41,
      "kind": "string_literal",
      "text": "Unbekannter Fehler",
      "context": "string literal",
      "line_content": "            <>✗ {executeResult.error ?? 'Unbekannter Fehler'}</>"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 137,
      "column": 44,
      "kind": "string_literal",
      "text": "Request failed",
      "context": "string literal",
      "line_content": "          const errText = event.content || 'Request failed';"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 190,
      "column": 22,
      "kind": "string_literal",
      "text": "Describe what you want to build. The AI will create and modify nodes on the canvas.",
      "context": "string literal",
      "line_content": "        emptyMessage=\"Describe what you want to build. The AI will create and modify nodes on the canvas.\""
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 197,
      "column": 22,
      "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/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 223,
      "column": 57,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "          borderTop: pendingFiles.length > 0 ? 'none' : '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 264,
      "column": 48,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "          borderTop: hasAttachments ? 'none' : '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 267,
      "column": 35,
      "kind": "string_literal",
      "text": "2px dashed var(--primary-color, #F25843)",
      "context": "string literal",
      "line_content": "          outline: treeDropOver ? '2px dashed var(--primary-color, #F25843)' : 'none',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 269,
      "column": 23,
      "kind": "string_literal",
      "text": "background 0.15s, outline 0.15s",
      "context": "string literal",
      "line_content": "          transition: 'background 0.15s, outline 0.15s',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 280,
      "column": 37,
      "kind": "string_literal",
      "text": "Describe a change...",
      "context": "string literal",
      "line_content": "          placeholder={workflowId ? 'Describe a change...' : 'Save workflow first'}"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 280,
      "column": 62,
      "kind": "string_literal",
      "text": "Save workflow first",
      "context": "string literal",
      "line_content": "          placeholder={workflowId ? 'Describe a change...' : 'Save workflow first'}"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 285,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #ccc)",
      "context": "string literal",
      "line_content": "            border: '1px solid var(--border-color, #ccc)',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 297,
      "column": 21,
      "kind": "string_literal",
      "text": "Datenquellen anhängen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Datenquellen anhängen\""
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 300,
      "column": 25,
      "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/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 341,
      "column": 46,
      "kind": "string_literal",
      "text": "2px solid #2e7d32",
      "context": "string literal",
      "line_content": "                        border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 341,
      "column": 68,
      "kind": "string_literal",
      "text": "2px solid #ccc",
      "context": "string literal",
      "line_content": "                        border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 370,
      "column": 50,
      "kind": "string_literal",
      "text": "2px solid #7b1fa2",
      "context": "string literal",
      "line_content": "                            border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',"
    },
    {
      "file": "src/components/FlowEditor/editor/EditorChatPanel.tsx",
      "line": 370,
      "column": 72,
      "kind": "string_literal",
      "text": "2px solid #ccc",
      "context": "string literal",
      "line_content": "                            border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 511,
      "column": 21,
      "kind": "string_literal",
      "text": "Delete",
      "context": "string literal",
      "line_content": "      if (e.key === 'Delete' || e.key === 'Backspace') {"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 596,
      "column": 29,
      "kind": "string_literal",
      "text": "0 0, 10 3.5, 0 7",
      "context": "string literal",
      "line_content": "            <polygon points=\"0 0, 10 3.5, 0 7\" fill=\"var(--text-secondary, #666)\" />"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 606,
      "column": 29,
      "kind": "string_literal",
      "text": "0 0, 10 3.5, 0 7",
      "context": "string literal",
      "line_content": "            <polygon points=\"0 0, 10 3.5, 0 7\" fill=\"var(--primary-color, #007bff)\" />"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 616,
      "column": 29,
      "kind": "string_literal",
      "text": "0 0, 10 3.5, 0 7",
      "context": "string literal",
      "line_content": "            <polygon points=\"0 0, 10 3.5, 0 7\" fill=\"#FF9800\" />"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 641,
      "column": 26,
      "kind": "string_literal",
      "text": "Verbindung auswählen (Entf zum Löschen, klicken Sie auf einen anderen Eingang zum Umleiten)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              aria-label=\"Verbindung auswählen (Entf zum Löschen, klicken Sie auf einen anderen Eingang zum Umleiten)\""
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 660,
      "column": 24,
      "kind": "jsx_text",
      "text": "Type mismatch warning: output type may not match input type",
      "context": "between tags, user-visible text node",
      "line_content": "                <title>Type mismatch warning: output type may not match input type</title>"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 759,
      "column": 29,
      "kind": "string_literal",
      "text": "Aktuelles Ziel – klicken zum Abwählen",
      "context": "string literal",
      "line_content": "                          ? 'Aktuelles Ziel – klicken zum Abwählen'"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 760,
      "column": 29,
      "kind": "string_literal",
      "text": "Klicken zum Umleiten",
      "context": "string literal",
      "line_content": "                          : 'Klicken zum Umleiten'"
    },
    {
      "file": "src/components/FlowEditor/editor/FlowCanvas.tsx",
      "line": 839,
      "column": 14,
      "kind": "jsx_text",
      "text": "Nodes aus der Liste links hierher ziehen.",
      "context": "between tags, user-visible text node",
      "line_content": "          <p>Nodes aus der Liste links hierher ziehen.</p>"
    },
    {
      "file": "src/components/FlowEditor/editor/NodeConfigPanel.tsx",
      "line": 89,
      "column": 25,
      "kind": "string_literal",
      "text": "z.B. Kundenformular, Prüfen Land",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"z.B. Kundenformular, Prüfen Land\""
    },
    {
      "file": "src/components/FlowEditor/editor/NodeSidebar.tsx",
      "line": 89,
      "column": 23,
      "kind": "string_literal",
      "text": "Nodes durchsuchen...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Nodes durchsuchen...\""
    },
    {
      "file": "src/components/FlowEditor/editor/RunTracingPanel.tsx",
      "line": 220,
      "column": 78,
      "kind": "string_literal",
      "text": "Retry count",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  <span style={{ color: '#f0ad4e', fontSize: '11px' }} title=\"Retry count\">"
    },
    {
      "file": "src/components/FlowEditor/editor/TemplatePicker.tsx",
      "line": 132,
      "column": 90,
      "kind": "string_literal",
      "text": "Übernehmen",
      "context": "string literal",
      "line_content": "                        {copying === tpl.id ? <FaSpinner className={styles.spinner} /> : 'Übernehmen'}"
    },
    {
      "file": "src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx",
      "line": 15,
      "column": 29,
      "kind": "string_literal",
      "text": "Manueller Trigger",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'manual', label: 'Manueller Trigger' },"
    },
    {
      "file": "src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx",
      "line": 16,
      "column": 27,
      "kind": "string_literal",
      "text": "Formular",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'form', label: 'Formular' },"
    },
    {
      "file": "src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx",
      "line": 17,
      "column": 31,
      "kind": "string_literal",
      "text": "Zeitplan",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'schedule', label: 'Zeitplan' },"
    },
    {
      "file": "src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx",
      "line": 18,
      "column": 32,
      "kind": "string_literal",
      "text": "Immer aktiv",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'always_on', label: 'Immer aktiv' },"
    },
    {
      "file": "src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx",
      "line": 85,
      "column": 25,
      "kind": "string_literal",
      "text": "z. B. Angebot anlegen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"z. B. Angebot anlegen\""
    },
    {
      "file": "src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx",
      "line": 88,
      "column": 88,
      "kind": "string_literal",
      "text": "Einstiegsart",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <div className={styles.workflowModalRadioGroup} role=\"radiogroup\" aria-label=\"Einstiegsart\">"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 11,
      "column": 26,
      "kind": "string_literal",
      "text": "Prompt",
      "context": "object property label: (e.g. table column)",
      "line_content": "  'ai.prompt': [{ label: 'Prompt', key: 'prompt', type: 'textarea' }],"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 12,
      "column": 31,
      "kind": "string_literal",
      "text": "Query",
      "context": "object property label: (e.g. table column)",
      "line_content": "  'ai.webResearch': [{ label: 'Query', key: 'query', type: 'dynamic' }],"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 14,
      "column": 14,
      "kind": "string_literal",
      "text": "Summary length",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { label: 'Summary length', key: 'summaryLength', type: 'select', options: ['short', 'medium', 'long'] },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 16,
      "column": 37,
      "kind": "string_literal",
      "text": "Target language",
      "context": "object property label: (e.g. table column)",
      "line_content": "  'ai.translateDocument': [{ label: 'Target language', key: 'targetLanguage', type: 'input' }],"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 18,
      "column": 14,
      "kind": "string_literal",
      "text": "Target format",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { label: 'Target format', key: 'targetFormat', type: 'select', options: ['pdf', 'docx', 'txt', 'md'] },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 20,
      "column": 36,
      "kind": "string_literal",
      "text": "Prompt",
      "context": "object property label: (e.g. table column)",
      "line_content": "  'ai.generateDocument': [{ label: 'Prompt', key: 'prompt', type: 'dynamic' }],"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 22,
      "column": 14,
      "kind": "string_literal",
      "text": "Prompt",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { label: 'Prompt', key: 'prompt', type: 'dynamic' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx",
      "line": 23,
      "column": 14,
      "kind": "string_literal",
      "text": "Language",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { label: 'Language', key: 'language', type: 'select', options: ['python', 'javascript', 'typescript', 'sql'] },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ApprovalNodeConfig.tsx",
      "line": 15,
      "column": 21,
      "kind": "string_literal",
      "text": "Genehmigungstitel",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        placeholder=\"Genehmigungstitel\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ApprovalNodeConfig.tsx",
      "line": 23,
      "column": 21,
      "kind": "string_literal",
      "text": "Was genehmigt werden soll",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        placeholder=\"Was genehmigt werden soll\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 84,
      "column": 11,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "  border: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 103,
      "column": 14,
      "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/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 111,
      "column": 14,
      "kind": "string_literal",
      "text": "Liste wählen (Ordner bis /team/…/list/…)",
      "context": "string literal",
      "line_content": "      return 'Liste wählen (Ordner bis /team/…/list/…)';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 115,
      "column": 14,
      "kind": "string_literal",
      "text": "Aufgabe wählen (Pfad …/task/…)",
      "context": "string literal",
      "line_content": "      return 'Aufgabe wählen (Pfad …/task/…)';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 117,
      "column": 14,
      "kind": "string_literal",
      "text": "ClickUp durchsuchen",
      "context": "string literal",
      "line_content": "      return 'ClickUp durchsuchen';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 378,
      "column": 24,
      "kind": "string_literal",
      "text": "Aufgaben konnten nicht geladen werden.",
      "context": "string literal",
      "line_content": "          setLoadError('Aufgaben konnten nicht geladen werden.');"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 402,
      "column": 25,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"— Quelle wählen —\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 403,
      "column": 25,
      "kind": "string_literal",
      "text": "Statisch (Aufgabe wählen)",
      "context": "string literal",
      "line_content": "            staticLabel=\"Statisch (Aufgabe wählen)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 422,
      "column": 32,
      "kind": "jsx_text",
      "text": "— Aufgabe wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"\">— Aufgabe wählen —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 542,
      "column": 27,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"— Quelle wählen —\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 555,
      "column": 30,
      "kind": "jsx_text",
      "text": "— Option wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"\">— Option wählen —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 577,
      "column": 27,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"— Quelle wählen —\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 613,
      "column": 27,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"— Quelle wählen —\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 638,
      "column": 42,
      "kind": "string_literal",
      "text": "z. B. 1234.56",
      "context": "string literal",
      "line_content": "        placeholder={ft === 'currency' ? 'z. B. 1234.56' : undefined}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 688,
      "column": 14,
      "kind": "jsx_text",
      "text": "Fälligkeit",
      "context": "between tags, user-visible text node",
      "line_content": "      <label>Fälligkeit</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 694,
      "column": 25,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"— Quelle wählen —\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 734,
      "column": 14,
      "kind": "jsx_text",
      "text": "Zeitschätzung (Stunden)",
      "context": "between tags, user-visible text node",
      "line_content": "      <label>Zeitschätzung (Stunden)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 740,
      "column": 25,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"— Quelle wählen —\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 782,
      "column": 27,
      "kind": "string_literal",
      "text": "Titel (name)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'name', label: 'Titel (name)' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 783,
      "column": 34,
      "kind": "string_literal",
      "text": "Beschreibung",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'description', label: 'Beschreibung' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 784,
      "column": 29,
      "kind": "string_literal",
      "text": "Status",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'status', label: 'Status' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 785,
      "column": 31,
      "kind": "string_literal",
      "text": "Priorität (1–4)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'priority', label: 'Priorität (1–4)' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 786,
      "column": 31,
      "kind": "string_literal",
      "text": "Fälligkeit (Datum oder ms)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'due_date', label: 'Fälligkeit (Datum oder ms)' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 787,
      "column": 38,
      "kind": "string_literal",
      "text": "Zeitschätzung (Stunden)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'time_estimate_h', label: 'Zeitschätzung (Stunden)' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 788,
      "column": 39,
      "kind": "string_literal",
      "text": "Zeitschätzung (ms)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'time_estimate_ms', label: 'Zeitschätzung (ms)' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 789,
      "column": 32,
      "kind": "string_literal",
      "text": "Zugewiesene",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'assignees', label: 'Zugewiesene' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 790,
      "column": 35,
      "kind": "string_literal",
      "text": "Benutzerdefiniertes Feld",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'custom_field', label: 'Benutzerdefiniertes Feld' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 852,
      "column": 18,
      "kind": "string_literal",
      "text": "Aufgaben konnten nicht geladen werden.",
      "context": "string literal",
      "line_content": "          setErr('Aufgaben konnten nicht geladen werden.');"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 867,
      "column": 14,
      "kind": "jsx_text",
      "text": "Vorhandene Aufgabe in der gewählten Liste",
      "context": "between tags, user-visible text node",
      "line_content": "      <label>Vorhandene Aufgabe in der gewählten Liste</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 882,
      "column": 28,
      "kind": "jsx_text",
      "text": "— Aufgabe aus ClickUp wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"\">— Aufgabe aus ClickUp wählen —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1047,
      "column": 15,
      "kind": "string_literal",
      "text": "Oder Referenz (ohne Formular-Payload)",
      "context": "string literal",
      "line_content": "        label=\"Oder Referenz (ohne Formular-Payload)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1064,
      "column": 25,
      "kind": "string_literal",
      "text": "Feld-ID",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Feld-ID\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1068,
      "column": 19,
      "kind": "string_literal",
      "text": "Neuer Wert",
      "context": "string literal",
      "line_content": "            label=\"Neuer Wert\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1072,
      "column": 25,
      "kind": "string_literal",
      "text": "Wert",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Wert\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1083,
      "column": 19,
      "kind": "string_literal",
      "text": "Status (Referenz)",
      "context": "string literal",
      "line_content": "            label=\"Status (Referenz)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1086,
      "column": 25,
      "kind": "string_literal",
      "text": "Kontext mit Status-String",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Kontext mit Status-String\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1097,
      "column": 20,
      "kind": "jsx_text",
      "text": "Status (wie in ClickUp)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Status (wie in ClickUp)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1099,
      "column": 32,
      "kind": "jsx_text",
      "text": "Status werden geladen…",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"\">Status werden geladen…</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1106,
      "column": 18,
      "kind": "jsx_text",
      "text": "Status (wie in ClickUp)",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>Status (wie in ClickUp)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1114,
      "column": 19,
      "kind": "string_literal",
      "text": "— Keine Status geladen —",
      "context": "string literal",
      "line_content": "                ? '— Keine Status geladen —'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1115,
      "column": 19,
      "kind": "string_literal",
      "text": "— Status wählen —",
      "context": "string literal",
      "line_content": "                : '— Status wählen —'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1147,
      "column": 18,
      "kind": "jsx_text",
      "text": "Priorität",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>Priorität</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1152,
      "column": 30,
      "kind": "jsx_text",
      "text": "— wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"\">— wählen —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1153,
      "column": 31,
      "kind": "jsx_text",
      "text": "1 — Dringend",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"1\">1 — Dringend</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1154,
      "column": 31,
      "kind": "jsx_text",
      "text": "2 — Hoch",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"2\">2 — Hoch</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1155,
      "column": 31,
      "kind": "jsx_text",
      "text": "3 — Normal",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"3\">3 — Normal</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1156,
      "column": 31,
      "kind": "jsx_text",
      "text": "4 — Niedrig",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"4\">4 — Niedrig</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1169,
      "column": 32,
      "kind": "string_literal",
      "text": "Alternativ nur Referenz",
      "context": "string literal",
      "line_content": "          {commonHybrid(false, 'Alternativ nur Referenz')}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1181,
      "column": 32,
      "kind": "string_literal",
      "text": "Alternativ: Referenz (Stunden)",
      "context": "string literal",
      "line_content": "          {commonHybrid(false, 'Alternativ: Referenz (Stunden)')}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1206,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "                border: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1234,
      "column": 32,
      "kind": "string_literal",
      "text": "[123,456] oder JSON-Array",
      "context": "string literal",
      "line_content": "          {commonHybrid(false, '[123,456] oder JSON-Array')}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1246,
      "column": 23,
      "kind": "string_literal",
      "text": "Beschreibung",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Beschreibung\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1258,
      "column": 23,
      "kind": "string_literal",
      "text": "Titel",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Titel\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1280,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "            border: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1654,
      "column": 16,
      "kind": "jsx_text",
      "text": "Connection (ClickUp)",
      "context": "between tags, user-visible text node",
      "line_content": "        <label>Connection (ClickUp)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1660,
      "column": 50,
      "kind": "string_literal",
      "text": "Loading...",
      "context": "string literal",
      "line_content": "          <option value=\"\">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1660,
      "column": 65,
      "kind": "string_literal",
      "text": "Select connection",
      "context": "string literal",
      "line_content": "          <option value=\"\">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1683,
      "column": 39,
      "kind": "string_literal",
      "text": "Workspaces werden geladen…",
      "context": "string literal",
      "line_content": "                {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1683,
      "column": 70,
      "kind": "string_literal",
      "text": "Workspace wählen…",
      "context": "string literal",
      "line_content": "                {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1693,
      "column": 20,
      "kind": "jsx_text",
      "text": "Liste (Tabelle)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Liste (Tabelle)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1701,
      "column": 21,
      "kind": "string_literal",
      "text": "Listen werden geladen…",
      "context": "string literal",
      "line_content": "                  ? 'Listen werden geladen…'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1703,
      "column": 23,
      "kind": "string_literal",
      "text": "Alle Listen im Workspace",
      "context": "string literal",
      "line_content": "                    ? 'Alle Listen im Workspace'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1704,
      "column": 23,
      "kind": "string_literal",
      "text": "Zuerst Workspace wählen",
      "context": "string literal",
      "line_content": "                    : 'Zuerst Workspace wählen'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1718,
      "column": 27,
      "kind": "string_literal",
      "text": "Stichwort für die Aufgabensuche",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Stichwort für die Aufgabensuche\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1726,
      "column": 22,
      "kind": "jsx_text",
      "text": "Seite (Pagination)",
      "context": "between tags, user-visible text node",
      "line_content": "              <label>Seite (Pagination)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1754,
      "column": 27,
      "kind": "jsx_text",
      "text": "Erledigte Aufgaben einbeziehen (Listen-Suche)",
      "context": "between tags, user-visible text node",
      "line_content": "                    <span>Erledigte Aufgaben einbeziehen (Listen-Suche)</span>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1793,
      "column": 39,
      "kind": "string_literal",
      "text": "Workspaces werden geladen…",
      "context": "string literal",
      "line_content": "                {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1793,
      "column": 70,
      "kind": "string_literal",
      "text": "Workspace wählen…",
      "context": "string literal",
      "line_content": "                {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1819,
      "column": 54,
      "kind": "string_literal",
      "text": "Listen werden geladen…",
      "context": "string literal",
      "line_content": "              <option value=\"\">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1819,
      "column": 81,
      "kind": "string_literal",
      "text": "Liste wählen…",
      "context": "string literal",
      "line_content": "              <option value=\"\">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1835,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "                border: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1854,
      "column": 23,
      "kind": "jsx_text",
      "text": "Bei Listenwahl automatisch abgleichen",
      "context": "between tags, user-visible text node",
      "line_content": "                <span>Bei Listenwahl automatisch abgleichen</span>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1898,
      "column": 38,
      "kind": "jsx_text",
      "text": "— Standard (ClickUp) —",
      "context": "between tags, user-visible text node",
      "line_content": "                    <option value=\"\">— Standard (ClickUp) —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1909,
      "column": 24,
      "kind": "jsx_text",
      "text": "Priorität",
      "context": "between tags, user-visible text node",
      "line_content": "                <label>Priorität</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1914,
      "column": 36,
      "kind": "jsx_text",
      "text": "— keine —",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"\">— keine —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1915,
      "column": 37,
      "kind": "jsx_text",
      "text": "1 — Dringend",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"1\">1 — Dringend</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1916,
      "column": 37,
      "kind": "jsx_text",
      "text": "2 — Hoch",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"2\">2 — Hoch</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1917,
      "column": 37,
      "kind": "jsx_text",
      "text": "3 — Normal",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"3\">3 — Normal</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1918,
      "column": 37,
      "kind": "jsx_text",
      "text": "4 — Niedrig",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"4\">4 — Niedrig</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 1940,
      "column": 31,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "                      border: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2013,
      "column": 22,
      "kind": "jsx_text",
      "text": "Zusätzliche Felder (JSON)",
      "context": "between tags, user-visible text node",
      "line_content": "              <label>Zusätzliche Felder (JSON)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2018,
      "column": 29,
      "kind": "string_literal",
      "text": "{\"priority\": \"3\"}",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                placeholder='{\"priority\": \"3\"}'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2028,
      "column": 20,
      "kind": "jsx_text",
      "text": "List path",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>List path</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2032,
      "column": 27,
      "kind": "string_literal",
      "text": "/team/{teamId}/list/{listId}",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"/team/{teamId}/list/{listId}\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2069,
      "column": 25,
      "kind": "string_literal",
      "text": "Referenz: voriger Knoten „Aufgabe erstellen“ → taskId",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Referenz: voriger Knoten „Aufgabe erstellen“ → taskId\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2073,
      "column": 20,
      "kind": "jsx_text",
      "text": "Path (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Path (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2077,
      "column": 27,
      "kind": "string_literal",
      "text": ".../task/{taskId}",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\".../task/{taskId}\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2090,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "            border: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2122,
      "column": 39,
      "kind": "string_literal",
      "text": "Workspaces werden geladen…",
      "context": "string literal",
      "line_content": "                {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2122,
      "column": 70,
      "kind": "string_literal",
      "text": "Workspace wählen…",
      "context": "string literal",
      "line_content": "                {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2146,
      "column": 54,
      "kind": "string_literal",
      "text": "Listen werden geladen…",
      "context": "string literal",
      "line_content": "              <option value=\"\">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2146,
      "column": 81,
      "kind": "string_literal",
      "text": "Liste wählen…",
      "context": "string literal",
      "line_content": "              <option value=\"\">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2177,
      "column": 22,
      "kind": "jsx_text",
      "text": "taskUpdate (JSON)",
      "context": "between tags, user-visible text node",
      "line_content": "              <label>taskUpdate (JSON)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2182,
      "column": 29,
      "kind": "string_literal",
      "text": "{\"name\": \"…\"} — Basis; Zeilen darüber setzen/überschreiben Felder",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                placeholder='{\"name\": \"…\"} — Basis; Zeilen darüber setzen/überschreiben Felder'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2191,
      "column": 18,
      "kind": "jsx_text",
      "text": "File name (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>File name (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx",
      "line": 2195,
      "column": 25,
      "kind": "string_literal",
      "text": "report.pdf",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"report.pdf\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/CommentNodeConfig.tsx",
      "line": 15,
      "column": 21,
      "kind": "string_literal",
      "text": "Kommentar eingeben...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        placeholder=\"Kommentar eingeben...\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ConfirmationNodeConfig.tsx",
      "line": 15,
      "column": 21,
      "kind": "string_literal",
      "text": "Möchten Sie bestätigen?",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        placeholder=\"Möchten Sie bestätigen?\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ConfirmationNodeConfig.tsx",
      "line": 19,
      "column": 14,
      "kind": "jsx_text",
      "text": "Bestätigen-Button",
      "context": "between tags, user-visible text node",
      "line_content": "      <label>Bestätigen-Button</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 60,
      "column": 39,
      "kind": "string_literal",
      "text": "Loading...",
      "context": "string literal",
      "line_content": "          <option value=\"\">{loading ? 'Loading...' : 'Select connection'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 60,
      "column": 54,
      "kind": "string_literal",
      "text": "Select connection",
      "context": "string literal",
      "line_content": "          <option value=\"\">{loading ? 'Loading...' : 'Select connection'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 77,
      "column": 33,
      "kind": "string_literal",
      "text": "Loading folders...",
      "context": "string literal",
      "line_content": "              {foldersLoading ? 'Loading folders...' : !connectionId ? 'Select account first' : 'Select folder'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 77,
      "column": 72,
      "kind": "string_literal",
      "text": "Select account first",
      "context": "string literal",
      "line_content": "              {foldersLoading ? 'Loading folders...' : !connectionId ? 'Select account first' : 'Select folder'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 77,
      "column": 97,
      "kind": "string_literal",
      "text": "Select folder",
      "context": "string literal",
      "line_content": "              {foldersLoading ? 'Loading folders...' : !connectionId ? 'Select account first' : 'Select folder'}"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 95,
      "column": 47,
      "kind": "jsx_text",
      "text": "Sent Items",
      "context": "between tags, user-visible text node",
      "line_content": "                    <option value=\"SentItems\">Sent Items</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 96,
      "column": 50,
      "kind": "jsx_text",
      "text": "Deleted Items",
      "context": "between tags, user-visible text node",
      "line_content": "                    <option value=\"DeletedItems\">Deleted Items</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 97,
      "column": 47,
      "kind": "jsx_text",
      "text": "Junk Email",
      "context": "between tags, user-visible text node",
      "line_content": "                    <option value=\"JunkEmail\">Junk Email</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 114,
      "column": 20,
      "kind": "jsx_text",
      "text": "Search query (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Search query (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 118,
      "column": 27,
      "kind": "string_literal",
      "text": "General search term (subject, body, from)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"General search term (subject, body, from)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 122,
      "column": 20,
      "kind": "jsx_text",
      "text": "From address (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>From address (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 126,
      "column": 27,
      "kind": "string_literal",
      "text": "e.g. sender@example.com",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"e.g. sender@example.com\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 130,
      "column": 20,
      "kind": "jsx_text",
      "text": "To address (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>To address (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 134,
      "column": 27,
      "kind": "string_literal",
      "text": "e.g. recipient@example.com",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"e.g. recipient@example.com\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 138,
      "column": 20,
      "kind": "jsx_text",
      "text": "Subject contains (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Subject contains (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 142,
      "column": 27,
      "kind": "string_literal",
      "text": "Word or phrase in subject",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Word or phrase in subject\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 146,
      "column": 20,
      "kind": "jsx_text",
      "text": "Body/content contains (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Body/content contains (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 150,
      "column": 27,
      "kind": "string_literal",
      "text": "Word or phrase in email body",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Word or phrase in email body\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 160,
      "column": 50,
      "kind": "jsx_text",
      "text": "Only emails with attachment",
      "context": "between tags, user-visible text node",
      "line_content": "            <label htmlFor=\"searchHasAttachment\">Only emails with attachment</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 175,
      "column": 20,
      "kind": "jsx_text",
      "text": "From address (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>From address (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 179,
      "column": 27,
      "kind": "string_literal",
      "text": "e.g. sender@example.com",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"e.g. sender@example.com\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 183,
      "column": 20,
      "kind": "jsx_text",
      "text": "Subject contains (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Subject contains (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 187,
      "column": 27,
      "kind": "string_literal",
      "text": "Word or phrase in subject",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Word or phrase in subject\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 197,
      "column": 44,
      "kind": "jsx_text",
      "text": "Only emails with attachment",
      "context": "between tags, user-visible text node",
      "line_content": "            <label htmlFor=\"hasAttachment\">Only emails with attachment</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 216,
      "column": 27,
      "kind": "string_literal",
      "text": "Email subject (or leave empty if connected to AI node above)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Email subject (or leave empty if connected to AI node above)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 224,
      "column": 27,
      "kind": "string_literal",
      "text": "Email body (or leave empty if connected to AI node above)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Email body (or leave empty if connected to AI node above)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 229,
      "column": 20,
      "kind": "jsx_text",
      "text": "To (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>To (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx",
      "line": 233,
      "column": 27,
      "kind": "string_literal",
      "text": "Recipient(s) (or from AI when connected)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Recipient(s) (or from AI when connected)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx",
      "line": 44,
      "column": 16,
      "kind": "jsx_text",
      "text": "Inhalte (welche Kontexte nacheinander in die Datei?)",
      "context": "between tags, user-visible text node",
      "line_content": "        <label>Inhalte (welche Kontexte nacheinander in die Datei?)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx",
      "line": 50,
      "column": 27,
      "kind": "string_literal",
      "text": "Quelle wählen…",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Quelle wählen…\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx",
      "line": 56,
      "column": 21,
      "kind": "string_literal",
      "text": "Entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Entfernen\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx",
      "line": 57,
      "column": 26,
      "kind": "string_literal",
      "text": "Inhalt entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              aria-label=\"Inhalt entfernen\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx",
      "line": 90,
      "column": 23,
      "kind": "string_literal",
      "text": "Dokumenttitel",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Dokumenttitel\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx",
      "line": 94,
      "column": 16,
      "kind": "jsx_text",
      "text": "Vorlage / Stil",
      "context": "between tags, user-visible text node",
      "line_content": "        <label>Vorlage / Stil</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/ReviewNodeConfig.tsx",
      "line": 16,
      "column": 17,
      "kind": "string_literal",
      "text": "{{nodeId.field}}",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "    placeholder=\"{{nodeId.field}}\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SelectionNodeConfig.tsx",
      "line": 16,
      "column": 25,
      "kind": "string_literal",
      "text": "value",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"value\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SelectionNodeConfig.tsx",
      "line": 25,
      "column": 25,
      "kind": "string_literal",
      "text": "label",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"label\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SelectionNodeConfig.tsx",
      "line": 35,
      "column": 100,
      "kind": "string_literal",
      "text": "",
      "context": "object property label: (e.g. table column)",
      "line_content": "      <button type=\"button\" onClick={() => updateParam('options', [...options, { value: '', label: '' }])}>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 15,
      "column": 11,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "  border: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 34,
      "column": 14,
      "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/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 42,
      "column": 14,
      "kind": "string_literal",
      "text": "Zielordner durchsuchen",
      "context": "string literal",
      "line_content": "      return 'Zielordner durchsuchen';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 44,
      "column": 14,
      "kind": "string_literal",
      "text": "Ordner durchsuchen",
      "context": "string literal",
      "line_content": "      return 'Ordner durchsuchen';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 46,
      "column": 14,
      "kind": "string_literal",
      "text": "Datei auswählen",
      "context": "string literal",
      "line_content": "      return 'Datei auswählen';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 48,
      "column": 14,
      "kind": "string_literal",
      "text": "Datei auswählen",
      "context": "string literal",
      "line_content": "      return 'Datei auswählen';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 50,
      "column": 14,
      "kind": "string_literal",
      "text": "Pfad aus Bibliothek wählen",
      "context": "string literal",
      "line_content": "      return 'Pfad aus Bibliothek wählen';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 52,
      "column": 14,
      "kind": "string_literal",
      "text": "SharePoint durchsuchen",
      "context": "string literal",
      "line_content": "      return 'SharePoint durchsuchen';"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 156,
      "column": 50,
      "kind": "string_literal",
      "text": "Loading...",
      "context": "string literal",
      "line_content": "          <option value=\"\">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 156,
      "column": 65,
      "kind": "string_literal",
      "text": "Select connection",
      "context": "string literal",
      "line_content": "          <option value=\"\">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 167,
      "column": 18,
      "kind": "jsx_text",
      "text": "Search query / path",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>Search query / path</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 171,
      "column": 25,
      "kind": "string_literal",
      "text": "/sites/SiteName/Shared Documents or search term",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"/sites/SiteName/Shared Documents or search term\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 178,
      "column": 18,
      "kind": "jsx_text",
      "text": "Folder path",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>Folder path</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 182,
      "column": 25,
      "kind": "string_literal",
      "text": "/ or /sites/SiteName/Shared Documents/Folder",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"/ or /sites/SiteName/Shared Documents/Folder\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 191,
      "column": 17,
      "kind": "string_literal",
      "text": "Target folder path",
      "context": "string literal",
      "line_content": "              ? 'Target folder path'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 193,
      "column": 19,
      "kind": "string_literal",
      "text": "File path",
      "context": "string literal",
      "line_content": "                ? 'File path'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 204,
      "column": 21,
      "kind": "string_literal",
      "text": "File path",
      "context": "string literal",
      "line_content": "                  : 'File path'"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 212,
      "column": 18,
      "kind": "jsx_text",
      "text": "Site ID",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>Site ID</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 216,
      "column": 25,
      "kind": "string_literal",
      "text": "SharePoint site ID",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"SharePoint site ID\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 224,
      "column": 20,
      "kind": "jsx_text",
      "text": "Source file",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Source file</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 228,
      "column": 27,
      "kind": "string_literal",
      "text": "/sites/.../folder/file.pdf",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"/sites/.../folder/file.pdf\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 232,
      "column": 20,
      "kind": "jsx_text",
      "text": "Destination folder",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Destination folder</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx",
      "line": 236,
      "column": 27,
      "kind": "string_literal",
      "text": "/sites/.../target-folder/",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"/sites/.../target-folder/\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 35,
      "column": 16,
      "kind": "jsx_text",
      "text": "Trustee Instance ID",
      "context": "between tags, user-visible text node",
      "line_content": "        <label>Trustee Instance ID</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 39,
      "column": 23,
      "kind": "string_literal",
      "text": "Trustee Feature-Instanz-ID",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Trustee Feature-Instanz-ID\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 46,
      "column": 20,
      "kind": "jsx_text",
      "text": "SharePoint Connection (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>SharePoint Connection (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 52,
      "column": 56,
      "kind": "string_literal",
      "text": "Keine (Dateien aus vorherigem Schritt)",
      "context": "string literal",
      "line_content": "              <option value=\"\">{loading ? 'Laden...' : 'Keine (Dateien aus vorherigem Schritt)'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 61,
      "column": 20,
      "kind": "jsx_text",
      "text": "SharePoint Ordnerpfad (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>SharePoint Ordnerpfad (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 65,
      "column": 27,
      "kind": "string_literal",
      "text": "/sites/MySite/Documents/Expenses",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"/sites/MySite/Documents/Expenses\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 69,
      "column": 20,
      "kind": "jsx_text",
      "text": "AI Prompt (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>AI Prompt (optional)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 73,
      "column": 27,
      "kind": "string_literal",
      "text": "Zusätzliche Anweisungen für die AI-Extraktion",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Zusätzliche Anweisungen für die AI-Extraktion\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 82,
      "column": 18,
      "kind": "jsx_text",
      "text": "Document List (Referenz)",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>Document List (Referenz)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx",
      "line": 86,
      "column": 25,
      "kind": "string_literal",
      "text": "Referenz auf vorherigen Schritt (automatisch verknüpft)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Referenz auf vorherigen Schritt (automatisch verknüpft)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/UploadNodeConfig.tsx",
      "line": 40,
      "column": 16,
      "kind": "jsx_text",
      "text": "Erlaubte Dateitypen",
      "context": "between tags, user-visible text node",
      "line_content": "        <label>Erlaubte Dateitypen</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/configs/UploadNodeConfig.tsx",
      "line": 58,
      "column": 16,
      "kind": "jsx_text",
      "text": "Max. Größe (MB)",
      "context": "between tags, user-visible text node",
      "line_content": "        <label>Max. Größe (MB)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 77,
      "column": 23,
      "kind": "string_literal",
      "text": "Zum Verschieben ziehen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                title=\"Zum Verschieben ziehen\""
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 88,
      "column": 31,
      "kind": "string_literal",
      "text": "name",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  placeholder=\"name\""
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 97,
      "column": 31,
      "kind": "string_literal",
      "text": "label",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  placeholder=\"label\""
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 134,
      "column": 47,
      "kind": "jsx_text",
      "text": "ClickUp-Aufgabe (Referenz)",
      "context": "between tags, user-visible text node",
      "line_content": "                <option value=\"clickup_tasks\">ClickUp-Aufgabe (Referenz)</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 135,
      "column": 48,
      "kind": "jsx_text",
      "text": "ClickUp-Status (Liste)",
      "context": "between tags, user-visible text node",
      "line_content": "                <option value=\"clickup_status\">ClickUp-Status (Liste)</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 152,
      "column": 23,
      "kind": "string_literal",
      "text": "Feld entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                title=\"Feld entfernen\""
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 188,
      "column": 68,
      "kind": "string_literal",
      "text": "Verbindung wählen…",
      "context": "string literal",
      "line_content": "                  <option value=\"\">{connectionsLoading ? 'Lade…' : 'Verbindung wählen…'}</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 199,
      "column": 31,
      "kind": "string_literal",
      "text": "z. B. aus ClickUp-URL …/list/123456789",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  placeholder=\"z. B. aus ClickUp-URL …/list/123456789\""
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 210,
      "column": 26,
      "kind": "string_literal",
      "text": "{ add: [taskId], rem: [] }",
      "context": "string literal",
      "line_content": "                  <code>{'{ add: [taskId], rem: [] }'}</code> — im ClickUp-Node per Datenquelle auf das"
    },
    {
      "file": "src/components/FlowEditor/nodes/form/FormNodeConfig.tsx",
      "line": 220,
      "column": 82,
      "kind": "string_literal",
      "text": "",
      "context": "object property label: (e.g. table column)",
      "line_content": "            updateParam('fields', [...fields, { name: '', type: 'string', label: '', required: false }])"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 170,
      "column": 26,
      "kind": "jsx_text",
      "text": "— Select connection —",
      "context": "between tags, user-visible text node",
      "line_content": "        <option value=\"\">— Select connection —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 214,
      "column": 33,
      "kind": "jsx_text",
      "text": "not equals",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"neq\">not equals</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 216,
      "column": 32,
      "kind": "jsx_text",
      "text": "greater than",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"gt\">greater than</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 217,
      "column": 32,
      "kind": "jsx_text",
      "text": "less than",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"lt\">less than</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 230,
      "column": 80,
      "kind": "string_literal",
      "text": "",
      "context": "object property label: (e.g. table column)",
      "line_content": "  const addField = () => onChange([...fields, { name: '', type: 'text', label: '', required: false }]);"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 242,
      "column": 42,
      "kind": "string_literal",
      "text": "Name",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <input type=\"text\" placeholder=\"Name\" value={String(f.name ?? '')} onChange={(e) => updateField(i, 'name', e.target.value)} style={{ flex: 1, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 248,
      "column": 36,
      "kind": "jsx_text",
      "text": "Select",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"select\">Select</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 251,
      "column": 42,
      "kind": "string_literal",
      "text": "Label",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <input type=\"text\" placeholder=\"Label\" value={String(f.label ?? '')} onChange={(e) => updateField(i, 'label', e.target.value)} style={{ flex: 1, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 277,
      "column": 42,
      "kind": "string_literal",
      "text": "Key",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <input type=\"text\" placeholder=\"Key\" value={String(r.key ?? r.fieldKey ?? '')} onChange={(e) => updateRow(i, 'key', e.target.value)} style={{ flex: 1, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 278,
      "column": 42,
      "kind": "string_literal",
      "text": "Value",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <input type=\"text\" placeholder=\"Value\" value={String(r.value ?? '')} onChange={(e) => updateRow(i, 'value', e.target.value)} style={{ flex: 2, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 294,
      "column": 19,
      "kind": "string_literal",
      "text": "*/5 * * * *",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "      placeholder=\"*/5 * * * *\""
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 310,
      "column": 31,
      "kind": "jsx_text",
      "text": "not equals",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"neq\">not equals</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 311,
      "column": 30,
      "kind": "jsx_text",
      "text": "greater than",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"gt\">greater than</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 312,
      "column": 30,
      "kind": "jsx_text",
      "text": "less than",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"lt\">less than</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 314,
      "column": 33,
      "kind": "jsx_text",
      "text": "is empty",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"empty\">is empty</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 315,
      "column": 37,
      "kind": "jsx_text",
      "text": "is not empty",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"not_empty\">is not empty</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 316,
      "column": 35,
      "kind": "jsx_text",
      "text": "is true",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"is_true\">is true</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 317,
      "column": 36,
      "kind": "jsx_text",
      "text": "is false",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"is_false\">is false</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 319,
      "column": 40,
      "kind": "string_literal",
      "text": "Value",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        <input type=\"text\" placeholder=\"Value\" value={String(cond.value ?? '')} onChange={(e) => update('value', e.target.value)} style={{ flex: 2, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 339,
      "column": 42,
      "kind": "string_literal",
      "text": "Source field",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <input type=\"text\" placeholder=\"Source field\" value={String(m.sourceField ?? '')} onChange={(e) => updateMapping(i, 'sourceField', e.target.value)} style={{ flex: 1, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 341,
      "column": 42,
      "kind": "string_literal",
      "text": "Output field",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <input type=\"text\" placeholder=\"Output field\" value={String(m.outputField ?? '')} onChange={(e) => updateMapping(i, 'outputField', e.target.value)} style={{ flex: 1, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 357,
      "column": 40,
      "kind": "string_literal",
      "text": "Field",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        <input type=\"text\" placeholder=\"Field\" value={String(cond.field ?? '')} onChange={(e) => update('field', e.target.value)} style={{ flex: 1, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 360,
      "column": 31,
      "kind": "jsx_text",
      "text": "not equals",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"neq\">not equals</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 362,
      "column": 38,
      "kind": "jsx_text",
      "text": "starts with",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"startsWith\">starts with</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 363,
      "column": 35,
      "kind": "jsx_text",
      "text": "is empty",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"isEmpty\">is empty</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 364,
      "column": 38,
      "kind": "jsx_text",
      "text": "is not empty",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"isNotEmpty\">is not empty</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 365,
      "column": 30,
      "kind": "jsx_text",
      "text": "greater than",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"gt\">greater than</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 366,
      "column": 30,
      "kind": "jsx_text",
      "text": "less than",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"lt\">less than</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx",
      "line": 368,
      "column": 40,
      "kind": "string_literal",
      "text": "Value",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        <input type=\"text\" placeholder=\"Value\" value={String(cond.value ?? '')} onChange={(e) => update('value', e.target.value)} style={{ flex: 1, padding: '2px 4px', borderRadius: 4, border: '1px solid #ccc' }} />"
    },
    {
      "file": "src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx",
      "line": 49,
      "column": 43,
      "kind": "string_literal",
      "text": "input.upload",
      "context": "string literal",
      "line_content": "    isMimeTypeRef && sourceNode?.type === 'input.upload' && sourceNode.parameters"
    },
    {
      "file": "src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx",
      "line": 100,
      "column": 77,
      "kind": "string_literal",
      "text": "Formular-Feld wählen…",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        <RefSourceSelect value={ref} onChange={handleRefChange} placeholder=\"Formular-Feld wählen…\" />"
    },
    {
      "file": "src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx",
      "line": 120,
      "column": 32,
      "kind": "jsx_text",
      "text": "— MIME-Type wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"\">— MIME-Type wählen —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx",
      "line": 142,
      "column": 25,
      "kind": "string_literal",
      "text": "z.B. application/pdf",
      "context": "string literal",
      "line_content": "                      ? 'z.B. application/pdf'"
    },
    {
      "file": "src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx",
      "line": 143,
      "column": 25,
      "kind": "string_literal",
      "text": "z.B. CH",
      "context": "string literal",
      "line_content": "                      : 'z.B. CH'"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/DataPicker.tsx",
      "line": 47,
      "column": 74,
      "kind": "string_literal",
      "text": "(ganze Ausgabe)",
      "context": "string literal",
      "line_content": "  const pathLabel = basePath.length ? basePath.map(String).join(' → ') : '(ganze Ausgabe)';"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/DataPicker.tsx",
      "line": 141,
      "column": 50,
      "kind": "jsx_text",
      "text": "Datenquelle wählen",
      "context": "between tags, user-visible text node",
      "line_content": "          <h4 className={styles.dataPickerTitle}>Datenquelle wählen</h4>"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/DataPicker.tsx",
      "line": 142,
      "column": 97,
      "kind": "string_literal",
      "text": "Schließen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <button type=\"button\" className={styles.dataPickerClose} onClick={onClose} aria-label=\"Schließen\">"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/DataPicker.tsx",
      "line": 183,
      "column": 60,
      "kind": "jsx_text",
      "text": "Keine vorherigen Nodes verfügbar.",
      "context": "between tags, user-visible text node",
      "line_content": "              return <p className={styles.dataPickerEmpty}>Keine vorherigen Nodes verfügbar.</p>;"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/DynamicValueField.tsx",
      "line": 58,
      "column": 53,
      "kind": "jsx_text",
      "text": "Keine vorherigen Nodes verfügbar.",
      "context": "between tags, user-visible text node",
      "line_content": "        <p className={styles.dynamicValueEmptyHint}>Keine vorherigen Nodes verfügbar.</p>"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/HybridStaticRefField.tsx",
      "line": 86,
      "column": 25,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"— Quelle wählen —\""
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/LoopItemsSelect.tsx",
      "line": 71,
      "column": 24,
      "kind": "string_literal",
      "text": "input.upload",
      "context": "string literal",
      "line_content": "    if (node?.type === 'input.upload') {"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/LoopItemsSelect.tsx",
      "line": 159,
      "column": 17,
      "kind": "string_literal",
      "text": "Über was soll iteriert werden?",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "  placeholder = 'Über was soll iteriert werden?',"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/LoopItemsSelect.tsx",
      "line": 185,
      "column": 14,
      "kind": "jsx_text",
      "text": "Datenquelle für Iteration",
      "context": "between tags, user-visible text node",
      "line_content": "      <label>Datenquelle für Iteration</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx",
      "line": 109,
      "column": 21,
      "kind": "string_literal",
      "text": "input.upload",
      "context": "string literal",
      "line_content": "  if (node.type === 'input.upload') {"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx",
      "line": 193,
      "column": 17,
      "kind": "string_literal",
      "text": "— Quelle wählen —",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "  placeholder = '— Quelle wählen —',"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx",
      "line": 270,
      "column": 17,
      "kind": "string_literal",
      "text": "Datenquelle wählen…",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "  placeholder = 'Datenquelle wählen…',"
    },
    {
      "file": "src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx",
      "line": 360,
      "column": 21,
      "kind": "string_literal",
      "text": "input.upload",
      "context": "string literal",
      "line_content": "  if (node.type === 'input.upload') {"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx",
      "line": 20,
      "column": 61,
      "kind": "string_literal",
      "text": "Feld 1",
      "context": "object property label: (e.g. table column)",
      "line_content": "  if (!Array.isArray(raw)) return [{ name: 'field1', label: 'Feld 1', type: 'text' }];"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx",
      "line": 62,
      "column": 27,
      "kind": "string_literal",
      "text": "Name (Payload-Key)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Name (Payload-Key)\""
    },
    {
      "file": "src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx",
      "line": 72,
      "column": 27,
      "kind": "string_literal",
      "text": "Beschriftung",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Beschriftung\""
    },
    {
      "file": "src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx",
      "line": 99,
      "column": 46,
      "kind": "jsx_text",
      "text": "ClickUp-Status (Liste)",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"clickup_status\">ClickUp-Status (Liste)</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx",
      "line": 114,
      "column": 79,
      "kind": "string_literal",
      "text": "Neues Feld",
      "context": "object property label: (e.g. table column)",
      "line_content": "            setFields([...fields, { name: `field${fields.length + 1}`, label: 'Neues Feld', type: 'text' }])"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 20,
      "column": 28,
      "kind": "string_literal",
      "text": "Täglich",
      "context": "string literal",
      "line_content": "  { value: 'daily', title: 'Täglich', subtitle: 'Jeden Tag zur gleichen Zeit' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 20,
      "column": 49,
      "kind": "string_literal",
      "text": "Jeden Tag zur gleichen Zeit",
      "context": "string literal",
      "line_content": "  { value: 'daily', title: 'Täglich', subtitle: 'Jeden Tag zur gleichen Zeit' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 21,
      "column": 53,
      "kind": "string_literal",
      "text": "Montag bis Freitag",
      "context": "string literal",
      "line_content": "  { value: 'weekdays', title: 'Werktage', subtitle: 'Montag bis Freitag' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 22,
      "column": 29,
      "kind": "string_literal",
      "text": "Bestimmte Tage",
      "context": "string literal",
      "line_content": "  { value: 'weekly', title: 'Bestimmte Tage', subtitle: 'Wochentage auswählen' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 22,
      "column": 57,
      "kind": "string_literal",
      "text": "Wochentage auswählen",
      "context": "string literal",
      "line_content": "  { value: 'weekly', title: 'Bestimmte Tage', subtitle: 'Wochentage auswählen' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 23,
      "column": 31,
      "kind": "string_literal",
      "text": "Ein anderer Zeitraum",
      "context": "string literal",
      "line_content": "  { value: 'calendar', title: 'Ein anderer Zeitraum', subtitle: 'Monatlich oder jährlich wiederkehrend' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 23,
      "column": 65,
      "kind": "string_literal",
      "text": "Monatlich oder jährlich wiederkehrend",
      "context": "string literal",
      "line_content": "  { value: 'calendar', title: 'Ein anderer Zeitraum', subtitle: 'Monatlich oder jährlich wiederkehrend' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 24,
      "column": 54,
      "kind": "string_literal",
      "text": "In regelmäßigen Abständen",
      "context": "string literal",
      "line_content": "  { value: 'interval', title: 'Intervall', subtitle: 'In regelmäßigen Abständen' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 30,
      "column": 3,
      "kind": "string_literal",
      "text": "März",
      "context": "string literal",
      "line_content": "  'März',"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 43,
      "column": 30,
      "kind": "string_literal",
      "text": "sek",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'seconds', label: 'sek', title: 'Sekunden' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 44,
      "column": 30,
      "kind": "string_literal",
      "text": "min",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'minutes', label: 'min', title: 'Minuten' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 45,
      "column": 28,
      "kind": "string_literal",
      "text": "h",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'hours', label: 'h', title: 'Stunden' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 46,
      "column": 27,
      "kind": "string_literal",
      "text": "d",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'days', label: 'd', title: 'Tage' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx",
      "line": 47,
      "column": 28,
      "kind": "string_literal",
      "text": "a",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'years', label: 'a', title: 'Jahre' },"
    },
    {
      "file": "src/components/FlowEditor/nodes/start/StartNodeConfig.tsx",
      "line": 12,
      "column": 13,
      "kind": "string_literal",
      "text": "manual | form | schedule | email | webhook | api | event",
      "context": "string literal",
      "line_content": "    \"type\": \"manual | form | schedule | email | webhook | api | event\","
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 58,
      "column": 43,
      "kind": "string_literal",
      "text": "input.upload",
      "context": "string literal",
      "line_content": "    isMimeTypeRef && sourceNode?.type === 'input.upload' && sourceNode.parameters"
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 114,
      "column": 28,
      "kind": "jsx_text",
      "text": "— MIME-Type wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"\">— MIME-Type wählen —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 130,
      "column": 23,
      "kind": "string_literal",
      "text": "0",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"0\""
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 154,
      "column": 28,
      "kind": "jsx_text",
      "text": "— wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"\">— wählen —</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 155,
      "column": 32,
      "kind": "jsx_text",
      "text": "Ja / wahr",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"true\">Ja / wahr</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 156,
      "column": 33,
      "kind": "jsx_text",
      "text": "Nein / falsch",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"false\">Nein / falsch</option>"
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 166,
      "column": 38,
      "kind": "string_literal",
      "text": "z.B. application/pdf",
      "context": "string literal",
      "line_content": "        placeholder={isMimeTypeRef ? 'z.B. application/pdf' : `Wert`}"
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 189,
      "column": 23,
      "kind": "string_literal",
      "text": "Feld zum Vergleichen wählen…",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Feld zum Vergleichen wählen…\""
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 195,
      "column": 18,
      "kind": "jsx_text",
      "text": "Fester Wert (falls keine Referenz)",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>Fester Wert (falls keine Referenz)</label>"
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 200,
      "column": 25,
      "kind": "string_literal",
      "text": "z.B. CH oder 42",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"z.B. CH oder 42\""
    },
    {
      "file": "src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx",
      "line": 206,
      "column": 16,
      "kind": "jsx_text",
      "text": "Fälle (Reihenfolge = Ausgang)",
      "context": "between tags, user-visible text node",
      "line_content": "        <label>Fälle (Reihenfolge = Ausgang)</label>"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 164,
      "column": 13,
      "kind": "string_literal",
      "text": "Persönlich",
      "context": "string literal",
      "line_content": "  personal: 'Persönlich',"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 257,
      "column": 150,
      "kind": "string_literal",
      "text": "Umbenennen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); setRenameValue(file.fileName); setRenaming(true); }} title=\"Umbenennen\">"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 278,
      "column": 112,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                <button className={`${styles.actionBtn} ${styles.danger}`} onClick={_handleDeleteSingle} title=\"Löschen\">"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 311,
      "column": 42,
      "kind": "string_literal",
      "text": "Neutralisierung aktiv (klicken zum Deaktivieren)",
      "context": "string literal",
      "line_content": "                title={file.neutralize ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 311,
      "column": 95,
      "kind": "string_literal",
      "text": "Neutralisierung aus (klicken zum Aktivieren)",
      "context": "string literal",
      "line_content": "                title={file.neutralize ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 380,
      "column": 41,
      "kind": "string_literal",
      "text": "Neuer Ordnername:",
      "context": "string literal",
      "line_content": "    const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 380,
      "column": 71,
      "kind": "string_literal",
      "text": "Neuer Ordner",
      "context": "string literal",
      "line_content": "    const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 499,
      "column": 136,
      "kind": "string_literal",
      "text": "Ordner herunterladen (ZIP)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); onDownloadFolder(node.id, node.name); }} title=\"Ordner herunterladen (ZIP)\">"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 504,
      "column": 77,
      "kind": "string_literal",
      "text": "Neuer Unterordner",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            <button className={styles.actionBtn} onClick={_handleAdd} title=\"Neuer Unterordner\">"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 509,
      "column": 144,
      "kind": "string_literal",
      "text": "Umbenennen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); setRenameValue(node.name); setRenaming(true); }} title=\"Umbenennen\">"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 529,
      "column": 108,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            <button className={`${styles.actionBtn} ${styles.danger}`} onClick={_handleDeleteSingle} title=\"Löschen\">"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 754,
      "column": 111,
      "kind": "string_literal",
      "text": "Aktualisieren",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); onRefresh(); }} title=\"Aktualisieren\">"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 763,
      "column": 53,
      "kind": "string_literal",
      "text": "Neuer Ordnername:",
      "context": "string literal",
      "line_content": "                const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 763,
      "column": 83,
      "kind": "string_literal",
      "text": "Neuer Ordner",
      "context": "string literal",
      "line_content": "                const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });"
    },
    {
      "file": "src/components/FolderTree/FolderTree.tsx",
      "line": 766,
      "column": 21,
      "kind": "string_literal",
      "text": "Neuer Ordner",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Neuer Ordner\""
    },
    {
      "file": "src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx",
      "line": 50,
      "column": 21,
      "kind": "string_literal",
      "text": "DeleteActionButton requires hookData to be provided",
      "context": "string literal",
      "line_content": "    throw new Error('DeleteActionButton requires hookData to be provided');"
    },
    {
      "file": "src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx",
      "line": 65,
      "column": 21,
      "kind": "string_literal",
      "text": "DeleteActionButton requires hookData.refetch to be defined",
      "context": "string literal",
      "line_content": "    throw new Error('DeleteActionButton requires hookData.refetch to be defined');"
    },
    {
      "file": "src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx",
      "line": 134,
      "column": 24,
      "kind": "string_literal",
      "text": "Delete failed",
      "context": "string literal",
      "line_content": "        onError?.(row, 'Delete failed');"
    },
    {
      "file": "src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx",
      "line": 138,
      "column": 39,
      "kind": "string_literal",
      "text": "Delete failed",
      "context": "string literal",
      "line_content": "      onError?.(row, error.message || 'Delete failed');"
    },
    {
      "file": "src/components/FormGenerator/ActionButtons/EditActionButton/EditActionButton.tsx",
      "line": 61,
      "column": 21,
      "kind": "string_literal",
      "text": "EditActionButton requires hookData to be provided",
      "context": "string literal",
      "line_content": "    throw new Error('EditActionButton requires hookData to be provided');"
    },
    {
      "file": "src/components/FormGenerator/ActionButtons/ViewActionButton/ViewActionButton.tsx",
      "line": 103,
      "column": 48,
      "kind": "string_literal",
      "text": "Unknown Item",
      "context": "string literal",
      "line_content": "          fileName={(row as any)[nameField] || 'Unknown Item'}"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorControls/FormGeneratorControls.tsx",
      "line": 43,
      "column": 35,
      "kind": "string_literal",
      "text": "Sync to Accounting",
      "context": "string literal",
      "line_content": "  // Optional batch actions (e.g. \"Sync to Accounting\") – shown when items are selected"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorControls/FormGeneratorControls.tsx",
      "line": 160,
      "column": 27,
      "kind": "string_literal",
      "text": " ",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\" \""
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx",
      "line": 670,
      "column": 28,
      "kind": "string_literal",
      "text": "English",
      "context": "object property label: (e.g. table column)",
      "line_content": "      { code: 'en', label: 'English', required: true },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx",
      "line": 671,
      "column": 28,
      "kind": "string_literal",
      "text": "German",
      "context": "object property label: (e.g. table column)",
      "line_content": "      { code: 'ge', label: 'German', required: false },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx",
      "line": 672,
      "column": 28,
      "kind": "string_literal",
      "text": "French",
      "context": "object property label: (e.g. table column)",
      "line_content": "      { code: 'fr', label: 'French', required: false },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx",
      "line": 673,
      "column": 28,
      "kind": "string_literal",
      "text": "Italian",
      "context": "object property label: (e.g. table column)",
      "line_content": "      { code: 'it', label: 'Italian', required: false }"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx",
      "line": 817,
      "column": 58,
      "kind": "jsx_text",
      "text": "({currentValues.length} {t('ausgewählt')})",
      "context": "between tags, user-visible text node",
      "line_content": "              <span className={styles.multiselectCount}> ({currentValues.length} {t('ausgewählt')})</span>"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx",
      "line": 133,
      "column": 7,
      "kind": "string_literal",
      "text": "⚠️ FormGeneratorList: No fields provided! ",
      "context": "string literal",
      "line_content": "      '⚠️ FormGeneratorList: No fields provided! ' +"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx",
      "line": 134,
      "column": 7,
      "kind": "string_literal",
      "text": "Fields should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. ",
      "context": "string literal",
      "line_content": "      'Fields should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. ' +"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx",
      "line": 135,
      "column": 7,
      "kind": "string_literal",
      "text": "Please ensure the calling component fetches and passes fields from the backend.",
      "context": "string literal",
      "line_content": "      'Please ensure the calling component fetches and passes fields from the backend.'"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx",
      "line": 354,
      "column": 29,
      "kind": "string_literal",
      "text": "Some items failed to delete",
      "context": "string literal",
      "line_content": "            throw new Error('Some items failed to delete');"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx",
      "line": 441,
      "column": 116,
      "kind": "string_literal",
      "text": "in progress",
      "context": "string literal",
      "line_content": "    if (statusValue === 'pending' || statusValue === 'waiting' || statusValue === 'in_progress' || statusValue === 'in progress') {"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx",
      "line": 611,
      "column": 23,
      "kind": "string_literal",
      "text": "t support ",
      "context": "string literal",
      "line_content": "    // TextField doesn't support 'textarea' type, use 'text' instead"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx",
      "line": 611,
      "column": 43,
      "kind": "string_literal",
      "text": " type, use ",
      "context": "string literal",
      "line_content": "    // TextField doesn't support 'textarea' type, use 'text' instead"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 42,
      "column": 35,
      "kind": "string_literal",
      "text": "Mär",
      "context": "string literal",
      "line_content": "  '01': 'Jan', '02': 'Feb', '03': 'Mär', '04': 'Apr',"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 118,
      "column": 43,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.noData}>Keine Daten</div>;"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 162,
      "column": 43,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.noData}>Keine Daten</div>;"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 193,
      "column": 43,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.noData}>Keine Daten</div>;"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 239,
      "column": 43,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.noData}>Keine Daten</div>;"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 285,
      "column": 43,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.noData}>Keine Daten</div>;"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 345,
      "column": 43,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.noData}>Keine Daten</div>;"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 457,
      "column": 47,
      "kind": "jsx_text",
      "text": "Unbekannter Sektionstyp",
      "context": "between tags, user-visible text node",
      "line_content": "        return <div className={styles.noData}>Unbekannter Sektionstyp</div>;"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 522,
      "column": 24,
      "kind": "string_literal",
      "text": "Januar",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 1, label: 'Januar' }, { value: 2, label: 'Februar' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 522,
      "column": 55,
      "kind": "string_literal",
      "text": "Februar",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 1, label: 'Januar' }, { value: 2, label: 'Februar' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 523,
      "column": 24,
      "kind": "string_literal",
      "text": "März",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 3, label: 'März' }, { value: 4, label: 'April' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 523,
      "column": 53,
      "kind": "string_literal",
      "text": "April",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 3, label: 'März' }, { value: 4, label: 'April' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 524,
      "column": 24,
      "kind": "string_literal",
      "text": "Mai",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 5, label: 'Mai' }, { value: 6, label: 'Juni' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 524,
      "column": 52,
      "kind": "string_literal",
      "text": "Juni",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 5, label: 'Mai' }, { value: 6, label: 'Juni' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 525,
      "column": 24,
      "kind": "string_literal",
      "text": "Juli",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 7, label: 'Juli' }, { value: 8, label: 'August' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 525,
      "column": 53,
      "kind": "string_literal",
      "text": "August",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 7, label: 'Juli' }, { value: 8, label: 'August' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 526,
      "column": 24,
      "kind": "string_literal",
      "text": "September",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 9, label: 'September' }, { value: 10, label: 'Oktober' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 526,
      "column": 59,
      "kind": "string_literal",
      "text": "Oktober",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 9, label: 'September' }, { value: 10, label: 'Oktober' },"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 527,
      "column": 25,
      "kind": "string_literal",
      "text": "November",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 11, label: 'November' }, { value: 12, label: 'Dezember' }"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 527,
      "column": 59,
      "kind": "string_literal",
      "text": "Dezember",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 11, label: 'November' }, { value: 12, label: 'Dezember' }"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 652,
      "column": 19,
      "kind": "string_literal",
      "text": "Keine Daten verfügbar",
      "context": "string literal",
      "line_content": "  noDataMessage = 'Keine Daten verfügbar',"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx",
      "line": 718,
      "column": 50,
      "kind": "jsx_text",
      "text": "Lade Daten...",
      "context": "between tags, user-visible text node",
      "line_content": "        <div className={styles.loadingContainer}>Lade Daten...</div>"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 363,
      "column": 7,
      "kind": "string_literal",
      "text": "⚠️ FormGeneratorTable: No columns provided! ",
      "context": "string literal",
      "line_content": "      '⚠️ FormGeneratorTable: No columns provided! ' +"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 364,
      "column": 7,
      "kind": "string_literal",
      "text": "Columns should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. ",
      "context": "string literal",
      "line_content": "      'Columns should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. ' +"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 365,
      "column": 7,
      "kind": "string_literal",
      "text": "Please ensure the calling component fetches and passes columns from the backend.",
      "context": "string literal",
      "line_content": "      'Please ensure the calling component fetches and passes columns from the backend.'"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 1328,
      "column": 43,
      "kind": "string_literal",
      "text": "') + '",
      "context": "string literal",
      "line_content": "          str = '\"' + str.replace(/\"/g, '\"\"') + '\"';"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 1686,
      "column": 21,
      "kind": "string_literal",
      "text": "s a number, check if it",
      "context": "string literal",
      "line_content": "            // If it's a number, check if it's in seconds (typical Unix timestamp range)"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 1694,
      "column": 27,
      "kind": "string_literal",
      "text": "s an ISO date string or date string (contains ",
      "context": "string literal",
      "line_content": "            // Check if it's an ISO date string or date string (contains 'T', '-', or ':')"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 1694,
      "column": 81,
      "kind": "string_literal",
      "text": ", or ",
      "context": "string literal",
      "line_content": "            // Check if it's an ISO date string or date string (contains 'T', '-', or ':')"
    },
    {
      "file": "src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx",
      "line": 2088,
      "column": 43,
      "kind": "string_literal",
      "text": "2px solid var(--border-color, #e2e8f0)",
      "context": "string literal",
      "line_content": "                            borderBottom: '2px solid var(--border-color, #e2e8f0)'"
    },
    {
      "file": "src/components/Navigation/MandateNavigation.tsx",
      "line": 62,
      "column": 41,
      "kind": "string_literal",
      "text": "Meine Sicht",
      "context": "string literal",
      "line_content": " * Used for grouping static items under \"Meine Sicht\" and \"Administration\"."
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 142,
      "column": 19,
      "kind": "jsx_text",
      "text": "Rechtliche Hinweise",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2>Rechtliche Hinweise</h2>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 152,
      "column": 21,
      "kind": "jsx_text",
      "text": "Datenverarbeitung und KI-Nutzung",
      "context": "between tags, user-visible text node",
      "line_content": "                <h3>Datenverarbeitung und KI-Nutzung</h3>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 154,
      "column": 21,
      "kind": "jsx_text",
      "text": "1. Einwilligung zur Datenverarbeitung",
      "context": "between tags, user-visible text node",
      "line_content": "                <h4>1. Einwilligung zur Datenverarbeitung</h4>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 155,
      "column": 20,
      "kind": "jsx_text",
      "text": "Mit der Nutzung dieser Anwendung stimmen Sie zu und erklären sich mit den folgenden Bedingungen zur Verarbeitung Ihrer Daten durch künstliche Intelligenz einverstanden:",
      "context": "between tags, user-visible text node",
      "line_content": "                <p>Mit der Nutzung dieser Anwendung stimmen Sie zu und erklären sich mit den folgenden Bedingungen zur Verarbeitung Ihrer Daten durch künstliche Intelligenz einverstanden:</p>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 157,
      "column": 23,
      "kind": "jsx_text",
      "text": "Sie autorisieren die Erfassung, Verarbeitung, Übertragung und Speicherung aller Daten, die Sie bei der Nutzung unserer Dienste bereitstellen.",
      "context": "between tags, user-visible text node",
      "line_content": "                  <li>Sie autorisieren die Erfassung, Verarbeitung, Übertragung und Speicherung aller Daten, die Sie bei der Nutzung unserer Dienste bereitstellen.</li>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 158,
      "column": 23,
      "kind": "jsx_text",
      "text": "Nutzerdaten können an Drittanbieter von künstlicher Intelligenz übertragen werden (z.B. OpenAI).",
      "context": "between tags, user-visible text node",
      "line_content": "                  <li>Nutzerdaten können an Drittanbieter von künstlicher Intelligenz übertragen werden (z.B. OpenAI).</li>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 159,
      "column": 23,
      "kind": "jsx_text",
      "text": "Diese Einwilligung erstreckt sich auf alle Inhalte, einschließlich Text, Bilder, Dokumente und Gesprächsverläufe.",
      "context": "between tags, user-visible text node",
      "line_content": "                  <li>Diese Einwilligung erstreckt sich auf alle Inhalte, einschließlich Text, Bilder, Dokumente und Gesprächsverläufe.</li>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 162,
      "column": 21,
      "kind": "jsx_text",
      "text": "2. Anerkennung der KI-Verarbeitungsrisiken",
      "context": "between tags, user-visible text node",
      "line_content": "                <h4>2. Anerkennung der KI-Verarbeitungsrisiken</h4>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 164,
      "column": 23,
      "kind": "jsx_text",
      "text": "KI-Systeme können unerwartete oder ungenaue Ausgaben erzeugen.",
      "context": "between tags, user-visible text node",
      "line_content": "                  <li>KI-Systeme können unerwartete oder ungenaue Ausgaben erzeugen.</li>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 165,
      "column": 23,
      "kind": "jsx_text",
      "text": "KI-Dienste können Daten gemäß ihren eigenen Nutzungsbedingungen speichern oder daraus lernen.",
      "context": "between tags, user-visible text node",
      "line_content": "                  <li>KI-Dienste können Daten gemäß ihren eigenen Nutzungsbedingungen speichern oder daraus lernen.</li>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 166,
      "column": 23,
      "kind": "jsx_text",
      "text": "Trotz Sicherheitsmaßnahmen können Daten anfällig für unbefugten Zugriff sein.",
      "context": "between tags, user-visible text node",
      "line_content": "                  <li>Trotz Sicherheitsmaßnahmen können Daten anfällig für unbefugten Zugriff sein.</li>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 169,
      "column": 21,
      "kind": "jsx_text",
      "text": "3. Haftungsausschluss",
      "context": "between tags, user-visible text node",
      "line_content": "                <h4>3. Haftungsausschluss</h4>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 170,
      "column": 20,
      "kind": "jsx_text",
      "text": "Im größtmöglichen Umfang verzichten Sie auf Ansprüche, die sich aus der KI-Verarbeitung ergeben, einschließlich Datenverletzungen und unbeabsichtigter Offenlegung.",
      "context": "between tags, user-visible text node",
      "line_content": "                <p>Im größtmöglichen Umfang verzichten Sie auf Ansprüche, die sich aus der KI-Verarbeitung ergeben, einschließlich Datenverletzungen und unbeabsichtigter Offenlegung.</p>"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 174,
      "column": 69,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                <a href=\"/poweron-privacy.html\" target=\"_blank\" rel=\"noopener noreferrer\">"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 177,
      "column": 67,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                <a href=\"/poweron-terms.html\" target=\"_blank\" rel=\"noopener noreferrer\">"
    },
    {
      "file": "src/components/Navigation/UserSection.tsx",
      "line": 180,
      "column": 66,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                <a href=\"/poweron-home.html\" target=\"_blank\" rel=\"noopener noreferrer\">"
    },
    {
      "file": "src/components/NotificationBell/NotificationBell.tsx",
      "line": 29,
      "column": 25,
      "kind": "string_literal",
      "text": "Gerade eben",
      "context": "string literal",
      "line_content": "  if (diff < 60) return 'Gerade eben';"
    },
    {
      "file": "src/components/NotificationBell/NotificationBell.tsx",
      "line": 183,
      "column": 20,
      "kind": "jsx_text",
      "text": "Keine Benachrichtigungen",
      "context": "between tags, user-visible text node",
      "line_content": "                <p>Keine Benachrichtigungen</p>"
    },
    {
      "file": "src/components/NotificationBell/NotificationBell.tsx",
      "line": 253,
      "column": 32,
      "kind": "string_literal",
      "text": "Schliessen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                    aria-label=\"Schliessen\""
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 21,
      "column": 12,
      "kind": "string_literal",
      "text": "Tipp: Ein Mandant ist Ihr Arbeitsbereich. Sie koennen spaeter weitere Mandanten fuer Teams oder Projekte erstellen.",
      "context": "string literal",
      "line_content": "  mandate: 'Tipp: Ein Mandant ist Ihr Arbeitsbereich. Sie koennen spaeter weitere Mandanten fuer Teams oder Projekte erstellen.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 22,
      "column": 12,
      "kind": "string_literal",
      "text": "Tipp: Im Store finden Sie AI-Workspace, CommCoach und weitere Features. Aktivieren Sie mindestens eines, um loszulegen.",
      "context": "string literal",
      "line_content": "  feature: 'Tipp: Im Store finden Sie AI-Workspace, CommCoach und weitere Features. Aktivieren Sie mindestens eines, um loszulegen.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 23,
      "column": 15,
      "kind": "string_literal",
      "text": "Tipp: Verbinden Sie Ihre Datenquellen (z.B. SharePoint, Google Drive), damit der AI-Assistent auf Ihre Dokumente zugreifen kann.",
      "context": "string literal",
      "line_content": "  connection: 'Tipp: Verbinden Sie Ihre Datenquellen (z.B. SharePoint, Google Drive), damit der AI-Assistent auf Ihre Dokumente zugreifen kann.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 24,
      "column": 9,
      "kind": "string_literal",
      "text": "Tipp: Starten Sie einen Chat mit dem AI-Assistenten. Er kann Ihre verbundenen Daten analysieren und Fragen beantworten.",
      "context": "string literal",
      "line_content": "  chat: 'Tipp: Starten Sie einen Chat mit dem AI-Assistenten. Er kann Ihre verbundenen Daten analysieren und Fragen beantworten.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 97,
      "column": 16,
      "kind": "string_literal",
      "text": "Mandant einrichten",
      "context": "object property label: (e.g. table column)",
      "line_content": "        label: 'Mandant einrichten',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 99,
      "column": 13,
      "kind": "string_literal",
      "text": "Dein Mandant ist eingerichtet.",
      "context": "string literal",
      "line_content": "          ? 'Dein Mandant ist eingerichtet.'"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 101,
      "column": 15,
      "kind": "string_literal",
      "text": "Du bist Mitglied eines Mandanten.",
      "context": "string literal",
      "line_content": "            ? 'Du bist Mitglied eines Mandanten.'"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 102,
      "column": 15,
      "kind": "string_literal",
      "text": "Erstelle deinen Arbeitsbereich.",
      "context": "string literal",
      "line_content": "            : 'Erstelle deinen Arbeitsbereich.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 109,
      "column": 16,
      "kind": "string_literal",
      "text": "Erstes Feature aktivieren",
      "context": "object property label: (e.g. table column)",
      "line_content": "        label: 'Erstes Feature aktivieren',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 111,
      "column": 13,
      "kind": "string_literal",
      "text": "Du hast aktive Features.",
      "context": "string literal",
      "line_content": "          ? 'Du hast aktive Features.'"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 112,
      "column": 13,
      "kind": "string_literal",
      "text": "Aktiviere dein erstes Feature im Store.",
      "context": "string literal",
      "line_content": "          : 'Aktiviere dein erstes Feature im Store.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 126,
      "column": 16,
      "kind": "string_literal",
      "text": "Erste Datenquelle einbinden",
      "context": "object property label: (e.g. table column)",
      "line_content": "        label: 'Erste Datenquelle einbinden',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 128,
      "column": 13,
      "kind": "string_literal",
      "text": "Du hast Verbindungen eingerichtet.",
      "context": "string literal",
      "line_content": "          ? 'Du hast Verbindungen eingerichtet.'"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 129,
      "column": 13,
      "kind": "string_literal",
      "text": "Verbinde deine erste Datenquelle.",
      "context": "string literal",
      "line_content": "          : 'Verbinde deine erste Datenquelle.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 147,
      "column": 16,
      "kind": "string_literal",
      "text": "Ersten AI-Chat starten",
      "context": "object property label: (e.g. table column)",
      "line_content": "        label: 'Ersten AI-Chat starten',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 149,
      "column": 13,
      "kind": "string_literal",
      "text": "Du hast bereits Chats gestartet.",
      "context": "string literal",
      "line_content": "          ? 'Du hast bereits Chats gestartet.'"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 150,
      "column": 13,
      "kind": "string_literal",
      "text": "Starte deinen ersten Chat mit dem AI-Assistenten.",
      "context": "string literal",
      "line_content": "          : 'Starte deinen ersten Chat mit dem AI-Assistenten.',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 208,
      "column": 15,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e5e7eb)",
      "context": "string literal",
      "line_content": "      border: '1px solid var(--border-color, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 227,
      "column": 27,
      "kind": "string_literal",
      "text": "background 0.3s",
      "context": "string literal",
      "line_content": "              transition: 'background 0.3s',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 242,
      "column": 66,
      "kind": "string_literal",
      "text": "1px solid var(--accent, #4f46e5)",
      "context": "string literal",
      "line_content": "                  border: step.completed ? 'none' : isNextStep ? '1px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 242,
      "column": 103,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e5e7eb)",
      "context": "string literal",
      "line_content": "                  border: step.completed ? 'none' : isNextStep ? '1px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 268,
      "column": 31,
      "kind": "string_literal",
      "text": "3px solid var(--accent, #4f46e5)",
      "context": "string literal",
      "line_content": "                  borderLeft: '3px solid var(--accent, #4f46e5)',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 281,
      "column": 20,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e5e7eb)",
      "context": "string literal",
      "line_content": "        borderTop: '1px solid var(--border-color, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingAssistant.tsx",
      "line": 295,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #d1d5db)",
      "context": "string literal",
      "line_content": "            border: '1px solid var(--border-color, #d1d5db)',"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 24,
      "column": 18,
      "kind": "string_literal",
      "text": "Du hast bereits einen Mandanten mit Admin-Zugang.",
      "context": "string literal",
      "line_content": "        setError('Du hast bereits einen Mandanten mit Admin-Zugang.');"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 30,
      "column": 47,
      "kind": "string_literal",
      "text": "Fehler bei der Einrichtung",
      "context": "string literal",
      "line_content": "      setError(err?.response?.data?.detail || 'Fehler bei der Einrichtung');"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 44,
      "column": 53,
      "kind": "string_literal",
      "text": "0 8px 32px rgba(0,0,0,0.2)",
      "context": "string literal",
      "line_content": "        maxWidth: '480px', width: '90%', boxShadow: '0 8px 32px rgba(0,0,0,0.2)',"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 54,
      "column": 46,
      "kind": "string_literal",
      "text": "2px solid var(--accent, #4f46e5)",
      "context": "string literal",
      "line_content": "            border: planKey === 'TRIAL_7D' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 54,
      "column": 83,
      "kind": "string_literal",
      "text": "2px solid var(--border, #e5e7eb)",
      "context": "string literal",
      "line_content": "            border: planKey === 'TRIAL_7D' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 60,
      "column": 23,
      "kind": "jsx_text",
      "text": "Kostenlos testen",
      "context": "between tags, user-visible text node",
      "line_content": "              <strong>Kostenlos testen</strong>"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 69,
      "column": 54,
      "kind": "string_literal",
      "text": "2px solid var(--accent, #4f46e5)",
      "context": "string literal",
      "line_content": "            border: planKey === 'STANDARD_MONTHLY' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 69,
      "column": 91,
      "kind": "string_literal",
      "text": "2px solid var(--border, #e5e7eb)",
      "context": "string literal",
      "line_content": "            border: planKey === 'STANDARD_MONTHLY' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 75,
      "column": 23,
      "kind": "jsx_text",
      "text": "Standard (Monatlich)",
      "context": "between tags, user-visible text node",
      "line_content": "              <strong>Standard (Monatlich)</strong>"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 90,
      "column": 25,
      "kind": "string_literal",
      "text": "z. B. Firmenname oder Projektname",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"z. B. Firmenname oder Projektname\""
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 114,
      "column": 24,
      "kind": "string_literal",
      "text": "Wird eingerichtet...",
      "context": "string literal",
      "line_content": "            {loading ? 'Wird eingerichtet...' : 'Mandant erstellen'}"
    },
    {
      "file": "src/components/OnboardingWizard.tsx",
      "line": 114,
      "column": 49,
      "kind": "string_literal",
      "text": "Mandant erstellen",
      "context": "string literal",
      "line_content": "            {loading ? 'Wird eingerichtet...' : 'Mandant erstellen'}"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 80,
      "column": 14,
      "kind": "string_literal",
      "text": "Anthropic (Claude)",
      "context": "string literal",
      "line_content": "  anthropic: 'Anthropic (Claude)',"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 81,
      "column": 11,
      "kind": "string_literal",
      "text": "OpenAI (GPT)",
      "context": "string literal",
      "line_content": "  openai: 'OpenAI (GPT)',"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 82,
      "column": 12,
      "kind": "string_literal",
      "text": "Mistral (Le Chat)",
      "context": "string literal",
      "line_content": "  mistral: 'Mistral (Le Chat)',"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 84,
      "column": 11,
      "kind": "string_literal",
      "text": "Tavily (Web Search)",
      "context": "string literal",
      "line_content": "  tavily: 'Tavily (Web Search)',"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 85,
      "column": 15,
      "kind": "string_literal",
      "text": "Private LLM",
      "context": "string literal",
      "line_content": "  privatellm: 'Private LLM',"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 144,
      "column": 26,
      "kind": "jsx_text",
      "text": "-- Auto --",
      "context": "between tags, user-visible text node",
      "line_content": "        <option value=\"\">-- Auto --</option>"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 264,
      "column": 30,
      "kind": "string_literal",
      "text": "Kein Provider ausgewählt",
      "context": "string literal",
      "line_content": "    if (noneSelected) return 'Kein Provider ausgewählt';"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 265,
      "column": 29,
      "kind": "string_literal",
      "text": "Alle Provider aktiv (dynamisch)",
      "context": "string literal",
      "line_content": "    if (allSelected) return 'Alle Provider aktiv (dynamisch)';"
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 282,
      "column": 15,
      "kind": "string_literal",
      "text": "Provider auswählen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        title=\"Provider auswählen\""
    },
    {
      "file": "src/components/ProviderSelector/ProviderSelector.tsx",
      "line": 347,
      "column": 50,
      "kind": "jsx_text",
      "text": "Alle Provider",
      "context": "between tags, user-visible text node",
      "line_content": "    return <span className={styles.allProviders}>Alle Provider</span>;"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 47,
      "column": 12,
      "kind": "string_literal",
      "text": "Zusammenführen",
      "context": "object property label: (e.g. table column)",
      "line_content": "    label: 'Zusammenführen',"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 48,
      "column": 18,
      "kind": "string_literal",
      "text": "Bestehende Regeln aktualisieren, neue hinzufügen",
      "context": "string literal",
      "line_content": "    description: 'Bestehende Regeln aktualisieren, neue hinzufügen',"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 53,
      "column": 12,
      "kind": "string_literal",
      "text": "Nur hinzufügen",
      "context": "object property label: (e.g. table column)",
      "line_content": "    label: 'Nur hinzufügen',"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 54,
      "column": 18,
      "kind": "string_literal",
      "text": "Nur neue Regeln hinzufügen, bestehende nicht ändern",
      "context": "string literal",
      "line_content": "    description: 'Nur neue Regeln hinzufügen, bestehende nicht ändern',"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 59,
      "column": 12,
      "kind": "string_literal",
      "text": "Ersetzen",
      "context": "object property label: (e.g. table column)",
      "line_content": "    label: 'Ersetzen',"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 60,
      "column": 18,
      "kind": "string_literal",
      "text": "Alle bestehenden Regeln löschen und ersetzen",
      "context": "string literal",
      "line_content": "    description: 'Alle bestehenden Regeln löschen und ersetzen',"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 91,
      "column": 15,
      "kind": "jsx_text",
      "text": "Rollen ({data.roles.length})",
      "context": "between tags, user-visible text node",
      "line_content": "          <h5>Rollen ({data.roles.length})</h5>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 100,
      "column": 48,
      "kind": "jsx_text",
      "text": "... und {data.roles.length - 5} weitere",
      "context": "between tags, user-visible text node",
      "line_content": "              <li className={styles.moreItems}>... und {data.roles.length - 5} weitere</li>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 105,
      "column": 15,
      "kind": "jsx_text",
      "text": "Regeln ({data.accessRules.length})",
      "context": "between tags, user-visible text node",
      "line_content": "          <h5>Regeln ({data.accessRules.length})</h5>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 114,
      "column": 48,
      "kind": "jsx_text",
      "text": "... und {data.accessRules.length - 5} weitere",
      "context": "between tags, user-visible text node",
      "line_content": "              <li className={styles.moreItems}>... und {data.accessRules.length - 5} weitere</li>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 144,
      "column": 24,
      "kind": "string_literal",
      "text": "Import erfolgreich",
      "context": "string literal",
      "line_content": "          {isSuccess ? 'Import erfolgreich' : 'Import fehlgeschlagen'}"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 144,
      "column": 47,
      "kind": "string_literal",
      "text": "Import fehlgeschlagen",
      "context": "string literal",
      "line_content": "          {isSuccess ? 'Import erfolgreich' : 'Import fehlgeschlagen'}"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 151,
      "column": 23,
      "kind": "jsx_text",
      "text": "Rollen erstellt:",
      "context": "between tags, user-visible text node",
      "line_content": "          <li><strong>Rollen erstellt:</strong> {result.rolesCreated}</li>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 152,
      "column": 23,
      "kind": "jsx_text",
      "text": "Rollen aktualisiert:",
      "context": "between tags, user-visible text node",
      "line_content": "          <li><strong>Rollen aktualisiert:</strong> {result.rolesUpdated}</li>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 153,
      "column": 23,
      "kind": "jsx_text",
      "text": "Regeln erstellt:",
      "context": "between tags, user-visible text node",
      "line_content": "          <li><strong>Regeln erstellt:</strong> {result.rulesCreated}</li>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 154,
      "column": 23,
      "kind": "jsx_text",
      "text": "Regeln aktualisiert:",
      "context": "between tags, user-visible text node",
      "line_content": "          <li><strong>Regeln aktualisiert:</strong> {result.rulesUpdated}</li>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 232,
      "column": 37,
      "kind": "string_literal",
      "text": "Fehler beim Parsen",
      "context": "string literal",
      "line_content": "      setParseError(result.error || 'Fehler beim Parsen');"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 288,
      "column": 25,
      "kind": "string_literal",
      "text": " der globalen Templates",
      "context": "string literal",
      "line_content": "            {isGlobal ? ' der globalen Templates' : ` des Mandanten \"${mandateName || mandateId}\"`}"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 288,
      "column": 69,
      "kind": "string_literal",
      "text": "${mandateName || mandateId}",
      "context": "string literal",
      "line_content": "            {isGlobal ? ' der globalen Templates' : ` des Mandanten \"${mandateName || mandateId}\"`}"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 335,
      "column": 25,
      "kind": "jsx_text",
      "text": "JSON-Datei auswählen oder hier ablegen",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>JSON-Datei auswählen oder hier ablegen</span>"
    },
    {
      "file": "src/components/RbacExportImport/RbacExportImport.tsx",
      "line": 343,
      "column": 23,
      "kind": "string_literal",
      "text": "Datei entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                title=\"Datei entfernen\""
    },
    {
      "file": "src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx",
      "line": 91,
      "column": 94,
      "kind": "string_literal",
      "text": "no results",
      "context": "string literal",
      "line_content": "      setShowSuggestions(results.length > 0 || true); // Show dropdown even if empty to show \"no results\" or error"
    },
    {
      "file": "src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx",
      "line": 96,
      "column": 75,
      "kind": "string_literal",
      "text": "Fehler beim Laden der Adressvorschläge",
      "context": "string literal",
      "line_content": "      const errorMessage = err?.response?.data?.detail || err?.message || 'Fehler beim Laden der Adressvorschläge';"
    },
    {
      "file": "src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx",
      "line": 277,
      "column": 54,
      "kind": "jsx_text",
      "text": "Suche Adressen...",
      "context": "between tags, user-visible text node",
      "line_content": "                <span className={styles.loadingText}>Suche Adressen...</span>"
    },
    {
      "file": "src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx",
      "line": 287,
      "column": 56,
      "kind": "jsx_text",
      "text": "Keine Adressen gefunden",
      "context": "between tags, user-visible text node",
      "line_content": "                <span className={styles.noResultsText}>Keine Adressen gefunden</span>"
    },
    {
      "file": "src/components/UiComponents/AutoScroll/AutoScroll.tsx",
      "line": 22,
      "column": 55,
      "kind": "string_literal",
      "text": "at bottom",
      "context": "string literal",
      "line_content": "   * Threshold in pixels from bottom to consider user \"at bottom\""
    },
    {
      "file": "src/components/UiComponents/AutoScroll/AutoScroll.tsx",
      "line": 151,
      "column": 22,
      "kind": "string_literal",
      "text": "Scroll to bottom",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          aria-label=\"Scroll to bottom\""
    },
    {
      "file": "src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx",
      "line": 42,
      "column": 48,
      "kind": "jsx_text",
      "text": "Ausnützungsziffer:",
      "context": "between tags, user-visible text node",
      "line_content": "                <span className={styles.label}>Ausnützungsziffer:</span>"
    },
    {
      "file": "src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx",
      "line": 54,
      "column": 48,
      "kind": "jsx_text",
      "text": "Gebäudelänge max:",
      "context": "between tags, user-visible text node",
      "line_content": "                <span className={styles.label}>Gebäudelänge max:</span>"
    },
    {
      "file": "src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx",
      "line": 66,
      "column": 48,
      "kind": "jsx_text",
      "text": "Mehrlängenzuschlag:",
      "context": "between tags, user-visible text node",
      "line_content": "                <span className={styles.label}>Mehrlängenzuschlag:</span>"
    },
    {
      "file": "src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx",
      "line": 72,
      "column": 48,
      "kind": "jsx_text",
      "text": "Höchstmass max:",
      "context": "between tags, user-visible text node",
      "line_content": "                <span className={styles.label}>Höchstmass max:</span>"
    },
    {
      "file": "src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx",
      "line": 78,
      "column": 48,
      "kind": "jsx_text",
      "text": "Fassadenhöhe:",
      "context": "between tags, user-visible text node",
      "line_content": "                <span className={styles.label}>Fassadenhöhe:</span>"
    },
    {
      "file": "src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx",
      "line": 89,
      "column": 21,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                rel=\"noopener noreferrer\""
    },
    {
      "file": "src/components/UiComponents/Button/CreateButton/CreateButton.tsx",
      "line": 11,
      "column": 16,
      "kind": "string_literal",
      "text": "Create New Item",
      "context": "string literal",
      "line_content": "  popupTitle = 'Create New Item',"
    },
    {
      "file": "src/components/UiComponents/Button/CreateButton/CreateButton.tsx",
      "line": 128,
      "column": 36,
      "kind": "string_literal",
      "text": "Creation failed",
      "context": "string literal",
      "line_content": "          onError(result?.error || 'Creation failed');"
    },
    {
      "file": "src/components/UiComponents/Button/CreateButton/CreateButton.tsx",
      "line": 134,
      "column": 34,
      "kind": "string_literal",
      "text": "Creation failed",
      "context": "string literal",
      "line_content": "        onError(error.message || 'Creation failed');"
    },
    {
      "file": "src/components/UiComponents/Button/UploadButton/UploadButton.tsx",
      "line": 74,
      "column": 54,
      "kind": "string_literal",
      "text": "Upload File",
      "context": "string literal",
      "line_content": "        {children || (isUploading ? 'Uploading...' : 'Upload File')}"
    },
    {
      "file": "src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx",
      "line": 68,
      "column": 18,
      "kind": "string_literal",
      "text": "No files connected to this workflow",
      "context": "string literal",
      "line_content": "  emptyMessage = 'No files connected to this workflow'"
    },
    {
      "file": "src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx",
      "line": 184,
      "column": 38,
      "kind": "jsx_text",
      "text": "Connected Files",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.title}>Connected Files</h3>"
    },
    {
      "file": "src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx",
      "line": 231,
      "column": 52,
      "kind": "string_literal",
      "text": "Click to detach from next message",
      "context": "string literal",
      "line_content": "                title={onAttach ? (isPendingFile ? 'Click to detach from next message' : 'Click to attach for next message') : undefined}"
    },
    {
      "file": "src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx",
      "line": 231,
      "column": 90,
      "kind": "string_literal",
      "text": "Click to attach for next message",
      "context": "string literal",
      "line_content": "                title={onAttach ? (isPendingFile ? 'Click to detach from next message' : 'Click to attach for next message') : undefined}"
    },
    {
      "file": "src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx",
      "line": 238,
      "column": 42,
      "kind": "string_literal",
      "text": "(click to detach)",
      "context": "string literal",
      "line_content": "                        {isPendingFile ? '(click to detach)' : '(click to attach)'}"
    },
    {
      "file": "src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx",
      "line": 238,
      "column": 64,
      "kind": "string_literal",
      "text": "(click to attach)",
      "context": "string literal",
      "line_content": "                        {isPendingFile ? '(click to detach)' : '(click to attach)'}"
    },
    {
      "file": "src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx",
      "line": 248,
      "column": 73,
      "kind": "string_literal",
      "text": "AI Created",
      "context": "string literal",
      "line_content": "                        {file.source === 'user_uploaded' ? 'Uploaded' : 'AI Created'}"
    },
    {
      "file": "src/components/UiComponents/DropdownSelect/DropdownSelect.tsx",
      "line": 40,
      "column": 17,
      "kind": "string_literal",
      "text": "Select an item",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "  placeholder = 'Select an item',"
    },
    {
      "file": "src/components/UiComponents/DropdownSelect/DropdownSelect.tsx",
      "line": 41,
      "column": 18,
      "kind": "string_literal",
      "text": "No items available",
      "context": "string literal",
      "line_content": "  emptyMessage = 'No items available',"
    },
    {
      "file": "src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx",
      "line": 95,
      "column": 16,
      "kind": "string_literal",
      "text": "Close warning",
      "context": "string literal",
      "line_content": "        return 'Close warning';"
    },
    {
      "file": "src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx",
      "line": 97,
      "column": 16,
      "kind": "string_literal",
      "text": "Close error",
      "context": "string literal",
      "line_content": "        return 'Close error';"
    },
    {
      "file": "src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx",
      "line": 99,
      "column": 16,
      "kind": "string_literal",
      "text": "Close success message",
      "context": "string literal",
      "line_content": "        return 'Close success message';"
    },
    {
      "file": "src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx",
      "line": 102,
      "column": 16,
      "kind": "string_literal",
      "text": "Close message",
      "context": "string literal",
      "line_content": "        return 'Close message';"
    },
    {
      "file": "src/components/UiComponents/LocationInput/LocationInput.tsx",
      "line": 23,
      "column": 17,
      "kind": "string_literal",
      "text": "Kanton, Gemeinde, Adresse oder Parzelle",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "  placeholder = 'Kanton, Gemeinde, Adresse oder Parzelle',"
    },
    {
      "file": "src/components/UiComponents/Log/Log.tsx",
      "line": 25,
      "column": 18,
      "kind": "string_literal",
      "text": "No log information available",
      "context": "string literal",
      "line_content": "  emptyMessage = 'No log information available',"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 16,
      "column": 16,
      "kind": "string_literal",
      "text": "© OpenStreetMap contributors",
      "context": "string literal",
      "line_content": "  attribution: '© OpenStreetMap contributors',"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 21,
      "column": 18,
      "kind": "string_literal",
      "text": "© OpenStreetMap © CARTO",
      "context": "string literal",
      "line_content": "  { attribution: '© OpenStreetMap © CARTO', maxZoom: 19 }"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 50,
      "column": 18,
      "kind": "string_literal",
      "text": "Klicken Sie auf die Karte, um einen Standort auszuwählen",
      "context": "string literal",
      "line_content": "  emptyMessage = 'Klicken Sie auf die Karte, um einen Standort auszuwählen',"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 195,
      "column": 31,
      "kind": "string_literal",
      "text": "<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>",
      "context": "string literal",
      "line_content": "            polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 195,
      "column": 45,
      "kind": "jsx_text",
      "text": "Ausgewählte Fläche",
      "context": "between tags, user-visible text node",
      "line_content": "            polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 195,
      "column": 81,
      "kind": "jsx_text",
      "text": "Zum Entfernen Parzelle im Panel nutzen",
      "context": "between tags, user-visible text node",
      "line_content": "            polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 208,
      "column": 29,
      "kind": "string_literal",
      "text": "<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>",
      "context": "string literal",
      "line_content": "          polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 208,
      "column": 43,
      "kind": "jsx_text",
      "text": "Ausgewählte Fläche",
      "context": "between tags, user-visible text node",
      "line_content": "          polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 208,
      "column": 79,
      "kind": "jsx_text",
      "text": "Zum Entfernen Parzelle im Panel nutzen",
      "context": "between tags, user-visible text node",
      "line_content": "          polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 224,
      "column": 21,
      "kind": "jsx_text",
      "text": "Parzelle ${parcel.number || parcel.id}",
      "context": "between tags, user-visible text node",
      "line_content": "            <strong>Parzelle ${parcel.number || parcel.id}</strong><br/>"
    },
    {
      "file": "src/components/UiComponents/MapView/MapViewLeaflet.tsx",
      "line": 226,
      "column": 17,
      "kind": "jsx_text",
      "text": "Ausgewählt",
      "context": "between tags, user-visible text node",
      "line_content": "            <em>Ausgewählt</em>"
    },
    {
      "file": "src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx",
      "line": 82,
      "column": 19,
      "kind": "jsx_text",
      "text": "Aktion fehlgeschlagen",
      "context": "between tags, user-visible text node",
      "line_content": "            <span>Aktion fehlgeschlagen</span>"
    },
    {
      "file": "src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx",
      "line": 202,
      "column": 27,
      "kind": "string_literal",
      "text": "Löschen bestätigen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                    title=\"Löschen bestätigen\""
    },
    {
      "file": "src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx",
      "line": 210,
      "column": 27,
      "kind": "string_literal",
      "text": "Abbrechen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                    title=\"Abbrechen\""
    },
    {
      "file": "src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx",
      "line": 220,
      "column": 25,
      "kind": "string_literal",
      "text": "Nachricht löschen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Nachricht löschen\""
    },
    {
      "file": "src/components/UiComponents/Messages/Messages.tsx",
      "line": 18,
      "column": 18,
      "kind": "string_literal",
      "text": "No messages yet",
      "context": "string literal",
      "line_content": "  emptyMessage = 'No messages yet',"
    },
    {
      "file": "src/components/UiComponents/OerebSection/OerebSection.tsx",
      "line": 71,
      "column": 29,
      "kind": "string_literal",
      "text": "In Kraft",
      "context": "string literal",
      "line_content": "                          ? 'In Kraft'"
    },
    {
      "file": "src/components/UiComponents/OerebSection/OerebSection.tsx",
      "line": 95,
      "column": 31,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                          rel=\"noopener noreferrer\""
    },
    {
      "file": "src/components/UiComponents/OerebSection/OerebSection.tsx",
      "line": 127,
      "column": 20,
      "kind": "string_literal",
      "text": "ÖREB-Auszug.pdf",
      "context": "string literal",
      "line_content": "          fileName=\"ÖREB-Auszug.pdf\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 148,
      "column": 64,
      "kind": "string_literal",
      "text": "Fehler beim Laden",
      "context": "string literal",
      "line_content": "        [parcelId]: e?.response?.data?.detail || e?.message || 'Fehler beim Laden'"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 175,
      "column": 64,
      "kind": "string_literal",
      "text": "Fehler bei der Extraktion",
      "context": "string literal",
      "line_content": "        [parcelId]: e?.response?.data?.detail || e?.message || 'Fehler bei der Extraktion'"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 219,
      "column": 44,
      "kind": "jsx_text",
      "text": "Parzellen-Informationen ({parcels.length})",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.title}>Parzellen-Informationen ({parcels.length})</h2>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 228,
      "column": 58,
      "kind": "jsx_text",
      "text": "Gesamtfläche",
      "context": "between tags, user-visible text node",
      "line_content": "                  <h3 className={styles.aggregatedTitle}>Gesamtfläche</h3>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 251,
      "column": 69,
      "kind": "jsx_text",
      "text": "— {bz.area_m2.toFixed(2)} m²",
      "context": "between tags, user-visible text node",
      "line_content": "                              <span className={styles.bauzoneArea}> — {bz.area_m2.toFixed(2)} m²</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 267,
      "column": 33,
      "kind": "string_literal",
      "text": "Parzelle entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                          title=\"Parzelle entfernen\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 318,
      "column": 58,
      "kind": "jsx_text",
      "text": "Fläche:",
      "context": "between tags, user-visible text node",
      "line_content": "                          <span className={styles.label}>Fläche:</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 331,
      "column": 58,
      "kind": "jsx_text",
      "text": "Grundstückstyp:",
      "context": "between tags, user-visible text node",
      "line_content": "                          <span className={styles.label}>Grundstückstyp:</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 345,
      "column": 59,
      "kind": "jsx_text",
      "text": "Dokumente werden geladen...",
      "context": "between tags, user-visible text node",
      "line_content": "                            <p className={styles.bzoHint}>Dokumente werden geladen...</p>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 363,
      "column": 43,
      "kind": "string_literal",
      "text": "Dokument öffnen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                                    title=\"Dokument öffnen\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 381,
      "column": 37,
      "kind": "string_literal",
      "text": "Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                              title=\"Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 405,
      "column": 72,
      "kind": "jsx_text",
      "text": "Fakten aus BZO",
      "context": "between tags, user-visible text node",
      "line_content": "                                        <span className={styles.label}>Fakten aus BZO</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 422,
      "column": 72,
      "kind": "jsx_text",
      "text": "Vorschläge",
      "context": "between tags, user-visible text node",
      "line_content": "                                        <span className={styles.label}>Vorschläge</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 441,
      "column": 72,
      "kind": "jsx_text",
      "text": "Weiterführende Bestimmungen",
      "context": "between tags, user-visible text node",
      "line_content": "                                        <span className={styles.label}>Weiterführende Bestimmungen</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 492,
      "column": 73,
      "kind": "jsx_text",
      "text": "Details anzeigen",
      "context": "between tags, user-visible text node",
      "line_content": "                                <summary className={styles.zoneSummary}>Details anzeigen</summary>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 507,
      "column": 33,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                            rel=\"noopener noreferrer\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 533,
      "column": 33,
      "kind": "string_literal",
      "text": "Parzelle entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                          title=\"Parzelle entfernen\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 584,
      "column": 58,
      "kind": "jsx_text",
      "text": "Fläche:",
      "context": "between tags, user-visible text node",
      "line_content": "                          <span className={styles.label}>Fläche:</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 597,
      "column": 58,
      "kind": "jsx_text",
      "text": "Grundstückstyp:",
      "context": "between tags, user-visible text node",
      "line_content": "                          <span className={styles.label}>Grundstückstyp:</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 611,
      "column": 59,
      "kind": "jsx_text",
      "text": "Dokumente werden geladen...",
      "context": "between tags, user-visible text node",
      "line_content": "                            <p className={styles.bzoHint}>Dokumente werden geladen...</p>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 629,
      "column": 43,
      "kind": "string_literal",
      "text": "Dokument öffnen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                                    title=\"Dokument öffnen\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 647,
      "column": 37,
      "kind": "string_literal",
      "text": "Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                              title=\"Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 671,
      "column": 72,
      "kind": "jsx_text",
      "text": "Fakten aus BZO",
      "context": "between tags, user-visible text node",
      "line_content": "                                        <span className={styles.label}>Fakten aus BZO</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 688,
      "column": 72,
      "kind": "jsx_text",
      "text": "Vorschläge",
      "context": "between tags, user-visible text node",
      "line_content": "                                        <span className={styles.label}>Vorschläge</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 707,
      "column": 72,
      "kind": "jsx_text",
      "text": "Weiterführende Bestimmungen",
      "context": "between tags, user-visible text node",
      "line_content": "                                        <span className={styles.label}>Weiterführende Bestimmungen</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 756,
      "column": 73,
      "kind": "jsx_text",
      "text": "Details anzeigen",
      "context": "between tags, user-visible text node",
      "line_content": "                                <summary className={styles.zoneSummary}>Details anzeigen</summary>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 771,
      "column": 33,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                            rel=\"noopener noreferrer\""
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 994,
      "column": 43,
      "kind": "jsx_text",
      "text": "Zone: {rule.zone_raw}",
      "context": "between tags, user-visible text node",
      "line_content": "                  {rule.zone_raw && <span>Zone: {rule.zone_raw}</span>}"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 995,
      "column": 39,
      "kind": "jsx_text",
      "text": "Seite {rule.page}",
      "context": "between tags, user-visible text node",
      "line_content": "                  {rule.page && <span>Seite {rule.page}</span>}"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 996,
      "column": 45,
      "kind": "jsx_text",
      "text": "Bereich: {rule.rule_scope}",
      "context": "between tags, user-visible text node",
      "line_content": "                  {rule.rule_scope && <span>Bereich: {rule.rule_scope}</span>}"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 1027,
      "column": 46,
      "kind": "jsx_text",
      "text": "Zone: {article.zone_raw}",
      "context": "between tags, user-visible text node",
      "line_content": "                  {article.zone_raw && <span>Zone: {article.zone_raw}</span>}"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 1028,
      "column": 25,
      "kind": "jsx_text",
      "text": "Seiten {article.page_start}-{article.page_end}",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Seiten {article.page_start}-{article.page_end}</span>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 1058,
      "column": 52,
      "kind": "jsx_text",
      "text": "Fehler ({data.errors.length})",
      "context": "between tags, user-visible text node",
      "line_content": "              <h5 className={styles.bzoErrorTitle}>Fehler ({data.errors.length})</h5>"
    },
    {
      "file": "src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx",
      "line": 1068,
      "column": 54,
      "kind": "jsx_text",
      "text": "Warnungen ({data.warnings.length})",
      "context": "between tags, user-visible text node",
      "line_content": "              <h5 className={styles.bzoWarningTitle}>Warnungen ({data.warnings.length})</h5>"
    },
    {
      "file": "src/components/UiComponents/Popup/Popup.tsx",
      "line": 108,
      "column": 28,
      "kind": "string_literal",
      "text": "Close",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                aria-label=\"Close\""
    },
    {
      "file": "src/components/UiComponents/Toast/Toast.tsx",
      "line": 53,
      "column": 20,
      "kind": "string_literal",
      "text": "Schließen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        aria-label=\"Schließen\""
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 23,
      "column": 29,
      "kind": "string_literal",
      "text": "Deutsch",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'de-DE', label: 'Deutsch', shortCode: 'de', flag: '🇩🇪' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 24,
      "column": 29,
      "kind": "string_literal",
      "text": "Deutsch (Schweiz)",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'de-CH', label: 'Deutsch (Schweiz)', shortCode: 'de', flag: '🇨🇭' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 25,
      "column": 29,
      "kind": "string_literal",
      "text": "English (US)",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'en-US', label: 'English (US)', shortCode: 'en', flag: '🇺🇸' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 26,
      "column": 29,
      "kind": "string_literal",
      "text": "English (UK)",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'en-GB', label: 'English (UK)', shortCode: 'en', flag: '🇬🇧' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 27,
      "column": 29,
      "kind": "string_literal",
      "text": "Français",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'fr-FR', label: 'Français', shortCode: 'fr', flag: '🇫🇷' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 28,
      "column": 29,
      "kind": "string_literal",
      "text": "Français (Suisse)",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'fr-CH', label: 'Français (Suisse)', shortCode: 'fr', flag: '🇨🇭' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 29,
      "column": 29,
      "kind": "string_literal",
      "text": "Italiano",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'it-IT', label: 'Italiano', shortCode: 'it', flag: '🇮🇹' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 30,
      "column": 29,
      "kind": "string_literal",
      "text": "Italiano (Svizzera)",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'it-CH', label: 'Italiano (Svizzera)', shortCode: 'it', flag: '🇨🇭' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 31,
      "column": 29,
      "kind": "string_literal",
      "text": "Español",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'es-ES', label: 'Español', shortCode: 'es', flag: '🇪🇸' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 32,
      "column": 29,
      "kind": "string_literal",
      "text": "Português",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { code: 'pt-BR', label: 'Português', shortCode: 'pt', flag: '🇧🇷' },"
    },
    {
      "file": "src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx",
      "line": 72,
      "column": 13,
      "kind": "string_literal",
      "text": "Sprache für Spracherkennung",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "    title = 'Sprache für Spracherkennung',"
    },
    {
      "file": "src/components/UiComponents/WorkflowStatus/WorkflowStatus.tsx",
      "line": 69,
      "column": 54,
      "kind": "string_literal",
      "text": "Workflow running",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <div className={styles.spinner} aria-label=\"Workflow running\" />"
    },
    {
      "file": "src/components/UiComponents/WorkflowStatus/WorkflowStatus.tsx",
      "line": 77,
      "column": 47,
      "kind": "jsx_text",
      "text": "Round {workflowStatus.round}",
      "context": "between tags, user-visible text node",
      "line_content": "          <span className={styles.roundBadge}>Round {workflowStatus.round}</span>"
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 45,
      "column": 27,
      "kind": "string_literal",
      "text": "gerade eben",
      "context": "string literal",
      "line_content": "  if (diffMin < 1) return 'gerade eben';"
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 284,
      "column": 25,
      "kind": "string_literal",
      "text": "Umbenennen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Umbenennen\""
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 293,
      "column": 25,
      "kind": "string_literal",
      "text": "Wiederherstellen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Wiederherstellen\""
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 301,
      "column": 25,
      "kind": "string_literal",
      "text": "Archivieren",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Archivieren\""
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 310,
      "column": 25,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Löschen\""
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 324,
      "column": 18,
      "kind": "string_literal",
      "text": "AI Workspace",
      "context": "string literal",
      "line_content": "      workspace: 'AI Workspace',"
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 332,
      "column": 55,
      "kind": "jsx_text",
      "text": "Lade Chats...",
      "context": "between tags, user-visible text node",
      "line_content": "  if (loading) return <div className={styles.loading}>Lade Chats...</div>;"
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 340,
      "column": 23,
      "kind": "string_literal",
      "text": "Suchen...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Suchen...\""
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 345,
      "column": 118,
      "kind": "string_literal",
      "text": "Neuer Chat",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <button className={styles.createBtn} onClick={() => { onCreateNew(); setTimeout(_loadChats, 500); }} title=\"Neuer Chat\">"
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 437,
      "column": 36,
      "kind": "string_literal",
      "text": "Keine archivierten Chats.",
      "context": "string literal",
      "line_content": "          {filter === 'archived' ? 'Keine archivierten Chats.' : 'Keine aktiven Chats.'}"
    },
    {
      "file": "src/components/UnifiedDataBar/ChatsTab.tsx",
      "line": 437,
      "column": 66,
      "kind": "string_literal",
      "text": "Keine aktiven Chats.",
      "context": "string literal",
      "line_content": "          {filter === 'archived' ? 'Keine archivierten Chats.' : 'Keine aktiven Chats.'}"
    },
    {
      "file": "src/components/UnifiedDataBar/FilesTab.tsx",
      "line": 233,
      "column": 55,
      "kind": "jsx_text",
      "text": "Lade Dateien...",
      "context": "between tags, user-visible text node",
      "line_content": "  if (loading) return <div className={styles.loading}>Lade Dateien...</div>;"
    },
    {
      "file": "src/components/UnifiedDataBar/FilesTab.tsx",
      "line": 261,
      "column": 19,
      "kind": "string_literal",
      "text": "Upload files",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            title=\"Upload files\""
    },
    {
      "file": "src/components/UnifiedDataBar/FilesTab.tsx",
      "line": 284,
      "column": 21,
      "kind": "string_literal",
      "text": "Dateien suchen...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        placeholder=\"Dateien suchen...\""
    },
    {
      "file": "src/components/UnifiedDataBar/FilesTab.tsx",
      "line": 325,
      "column": 28,
      "kind": "string_literal",
      "text": "Keine Dateien gefunden",
      "context": "string literal",
      "line_content": "            {searchQuery ? 'Keine Dateien gefunden' : 'Keine Dateien. Drag & Drop zum Hochladen.'}"
    },
    {
      "file": "src/components/UnifiedDataBar/FilesTab.tsx",
      "line": 325,
      "column": 55,
      "kind": "string_literal",
      "text": "Keine Dateien. Drag & Drop zum Hochladen.",
      "context": "string literal",
      "line_content": "            {searchQuery ? 'Keine Dateien gefunden' : 'Keine Dateien. Drag & Drop zum Hochladen.'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 188,
      "column": 20,
      "kind": "string_literal",
      "text": "Feature Instance",
      "context": "string literal",
      "line_content": "  featureInstance: 'Feature Instance',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 340,
      "column": 18,
      "kind": "string_literal",
      "text": "spin 0.6s linear infinite",
      "context": "string literal",
      "line_content": "      animation: 'spin 0.6s linear infinite',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 853,
      "column": 42,
      "kind": "string_literal",
      "text": "Neutralize: ON (click to deactivate)",
      "context": "string literal",
      "line_content": "                  title={ds.neutralize ? 'Neutralize: ON (click to deactivate)' : 'Neutralize: OFF (click to activate)'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 853,
      "column": 83,
      "kind": "string_literal",
      "text": "Neutralize: OFF (click to activate)",
      "context": "string literal",
      "line_content": "                  title={ds.neutralize ? 'Neutralize: ON (click to deactivate)' : 'Neutralize: OFF (click to activate)'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 860,
      "column": 25,
      "kind": "string_literal",
      "text": "Entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Entfernen\""
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 956,
      "column": 31,
      "kind": "string_literal",
      "text": "Remove all tables for this record",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                        title=\"Remove all tables for this record\""
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 986,
      "column": 53,
      "kind": "string_literal",
      "text": "Neutralize: ON",
      "context": "string literal",
      "line_content": "                            title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 986,
      "column": 72,
      "kind": "string_literal",
      "text": "Neutralize: OFF",
      "context": "string literal",
      "line_content": "                            title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 993,
      "column": 35,
      "kind": "string_literal",
      "text": "Remove",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                            title=\"Remove\""
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1010,
      "column": 35,
      "kind": "string_literal",
      "text": "3px solid #7b1fa2",
      "context": "string literal",
      "line_content": "                      borderLeft: '3px solid #7b1fa2',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1029,
      "column": 49,
      "kind": "string_literal",
      "text": "Neutralize: ON",
      "context": "string literal",
      "line_content": "                        title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1029,
      "column": 68,
      "kind": "string_literal",
      "text": "Neutralize: OFF",
      "context": "string literal",
      "line_content": "                        title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1036,
      "column": 31,
      "kind": "string_literal",
      "text": "Entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                        title=\"Entfernen\""
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1139,
      "column": 23,
      "kind": "string_literal",
      "text": "background 0.1s",
      "context": "string literal",
      "line_content": "          transition: 'background 0.1s',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1166,
      "column": 19,
      "kind": "string_literal",
      "text": "Add as data source",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            title=\"Add as data source\""
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1168,
      "column": 33,
      "kind": "string_literal",
      "text": "+ Add",
      "context": "string literal",
      "line_content": "            {isAdding ? '...' : '+ Add'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1172,
      "column": 81,
      "kind": "string_literal",
      "text": "Already added",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <span style={{ fontSize: 10, color: '#4caf50', flexShrink: 0 }} title=\"Already added\">"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1240,
      "column": 23,
      "kind": "string_literal",
      "text": "background 0.1s",
      "context": "string literal",
      "line_content": "          transition: 'background 0.1s', userSelect: 'none',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1315,
      "column": 23,
      "kind": "string_literal",
      "text": "background 0.1s",
      "context": "string literal",
      "line_content": "          transition: 'background 0.1s', userSelect: 'none',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1411,
      "column": 21,
      "kind": "string_literal",
      "text": "background 0.1s",
      "context": "string literal",
      "line_content": "        transition: 'background 0.1s', userSelect: 'none',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1429,
      "column": 17,
      "kind": "string_literal",
      "text": "Add as feature data source",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          title=\"Add as feature data source\""
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1431,
      "column": 31,
      "kind": "string_literal",
      "text": "+ Add",
      "context": "string literal",
      "line_content": "          {isAdding ? '...' : '+ Add'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1435,
      "column": 79,
      "kind": "string_literal",
      "text": "Already added",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        <span style={{ fontSize: 10, color: '#4caf50', flexShrink: 0 }} title=\"Already added\">"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1479,
      "column": 23,
      "kind": "string_literal",
      "text": "background 0.1s",
      "context": "string literal",
      "line_content": "          transition: 'background 0.1s', userSelect: 'none',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1554,
      "column": 23,
      "kind": "string_literal",
      "text": "background 0.1s",
      "context": "string literal",
      "line_content": "          transition: 'background 0.1s', userSelect: 'none',"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1575,
      "column": 19,
      "kind": "string_literal",
      "text": "Add all tables for this record",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            title=\"Add all tables for this record\""
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1577,
      "column": 33,
      "kind": "string_literal",
      "text": "+ Add",
      "context": "string literal",
      "line_content": "            {isAdding ? '...' : '+ Add'}"
    },
    {
      "file": "src/components/UnifiedDataBar/SourcesTab.tsx",
      "line": 1581,
      "column": 81,
      "kind": "string_literal",
      "text": "Already added",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <span style={{ fontSize: 10, color: '#4caf50', flexShrink: 0 }} title=\"Already added\">"
    },
    {
      "file": "src/contexts/FileContext.tsx",
      "line": 209,
      "column": 21,
      "kind": "string_literal",
      "text": "useFileContext must be used within a FileProvider",
      "context": "string literal",
      "line_content": "    throw new Error('useFileContext must be used within a FileProvider');"
    },
    {
      "file": "src/contexts/PekContext.tsx",
      "line": 74,
      "column": 21,
      "kind": "string_literal",
      "text": "usePekContext must be used within a PekProvider",
      "context": "string literal",
      "line_content": "    throw new Error('usePekContext must be used within a PekProvider');"
    },
    {
      "file": "src/contexts/ToastContext.tsx",
      "line": 94,
      "column": 21,
      "kind": "string_literal",
      "text": "useToast must be used within a ToastProvider",
      "context": "string literal",
      "line_content": "    throw new Error('useToast must be used within a ToastProvider');"
    },
    {
      "file": "src/contexts/WorkflowSelectionContext.tsx",
      "line": 38,
      "column": 21,
      "kind": "string_literal",
      "text": "useWorkflowSelection must be used within a WorkflowSelectionProvider",
      "context": "string literal",
      "line_content": "    throw new Error('useWorkflowSelection must be used within a WorkflowSelectionProvider');"
    },
    {
      "file": "src/core/PageManager/SidebarProvider.tsx",
      "line": 53,
      "column": 25,
      "kind": "string_literal",
      "text": "useSidebar must be used within a SidebarProvider",
      "context": "string literal",
      "line_content": "        throw new Error('useSidebar must be used within a SidebarProvider');"
    },
    {
      "file": "src/core/PageManager/SidebarProvider.tsx",
      "line": 461,
      "column": 59,
      "kind": "string_literal",
      "text": "Failed to load sidebar items",
      "context": "string literal",
      "line_content": "            setError(err instanceof Error ? err.message : 'Failed to load sidebar items');"
    },
    {
      "file": "src/hooks/useAccessRules.tsx",
      "line": 23,
      "column": 24,
      "kind": "string_literal",
      "text": "Keine",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'n', label: 'Keine', color: '#e53e3e' },"
    },
    {
      "file": "src/hooks/useAccessRules.tsx",
      "line": 24,
      "column": 24,
      "kind": "string_literal",
      "text": "Eigene",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'm', label: 'Eigene', color: '#d69e2e' },"
    },
    {
      "file": "src/hooks/useAccessRules.tsx",
      "line": 25,
      "column": 24,
      "kind": "string_literal",
      "text": "Gruppe",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'g', label: 'Gruppe', color: '#3182ce' },"
    },
    {
      "file": "src/hooks/useAccessRules.tsx",
      "line": 26,
      "column": 24,
      "kind": "string_literal",
      "text": "Alle",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { value: 'a', label: 'Alle', color: '#38a169' },"
    },
    {
      "file": "src/hooks/useAccessRules.tsx",
      "line": 114,
      "column": 69,
      "kind": "string_literal",
      "text": "Fehler beim Laden der Regeln",
      "context": "string literal",
      "line_content": "      const errorMsg = err.response?.data?.detail || err.message || 'Fehler beim Laden der Regeln';"
    },
    {
      "file": "src/hooks/useAccessRules.tsx",
      "line": 197,
      "column": 69,
      "kind": "string_literal",
      "text": "Fehler beim Speichern",
      "context": "string literal",
      "line_content": "      const errorMsg = err.response?.data?.detail || err.message || 'Fehler beim Speichern';"
    },
    {
      "file": "src/hooks/useConfirm.tsx",
      "line": 6,
      "column": 31,
      "kind": "string_literal",
      "text": "Wirklich löschen?",
      "context": "string literal",
      "line_content": " *   const ok = await confirm('Wirklich löschen?', { confirmLabel: 'Löschen', variant: 'danger' });"
    },
    {
      "file": "src/hooks/useConfirm.tsx",
      "line": 6,
      "column": 68,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": " *   const ok = await confirm('Wirklich löschen?', { confirmLabel: 'Löschen', variant: 'danger' });"
    },
    {
      "file": "src/hooks/useConfirm.tsx",
      "line": 26,
      "column": 10,
      "kind": "string_literal",
      "text": "Bestätigung",
      "context": "string literal",
      "line_content": "  title: 'Bestätigung',"
    },
    {
      "file": "src/hooks/useConfirm.tsx",
      "line": 27,
      "column": 17,
      "kind": "string_literal",
      "text": "Bestätigen",
      "context": "string literal",
      "line_content": "  confirmLabel: 'Bestätigen',"
    },
    {
      "file": "src/hooks/useConfirm.tsx",
      "line": 78,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--color-border, #333)",
      "context": "string literal",
      "line_content": "            border: '1px solid var(--color-border, #333)',"
    },
    {
      "file": "src/hooks/useConfirm.tsx",
      "line": 82,
      "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/useConfirm.tsx",
      "line": 105,
      "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/hooks/useInstancePermissions.tsx",
      "line": 117,
      "column": 55,
      "kind": "jsx_text",
      "text": "Verträge",
      "context": "between tags, user-visible text node",
      "line_content": " *       {canViewContracts && <NavLink to=\"contracts\">Verträge</NavLink>}"
    },
    {
      "file": "src/hooks/useInstancePermissions.tsx",
      "line": 343,
      "column": 14,
      "kind": "jsx_text",
      "text": "Neuer Vertrag",
      "context": "between tags, user-visible text node",
      "line_content": " *   <Button>Neuer Vertrag</Button>"
    },
    {
      "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": "    <p>Lade Feature-Daten...</p>"
    },
    {
      "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": "    <h2>Zugriff nicht möglich</h2>"
    },
    {
      "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": "          <h1>Übersicht</h1>"
    },
    {
      "file": "src/pages/Dashboard.tsx",
      "line": 82,
      "column": 13,
      "kind": "jsx_text",
      "text": "Übersicht",
      "context": "between tags, user-visible text node",
      "line_content": "        <h1>Übersicht</h1>"
    },
    {
      "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": "  <PlaceholderView title=\"Workflow Dashboard\" description=\"Übersicht der Workflows\" />"
    },
    {
      "file": "src/pages/FeatureView.tsx",
      "line": 67,
      "column": 59,
      "kind": "string_literal",
      "text": "Übersicht der Workflows",
      "context": "string literal",
      "line_content": "  <PlaceholderView title=\"Workflow Dashboard\" description=\"Übersicht der Workflows\" />"
    },
    {
      "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": "  <PlaceholderView title=\"Runs\" description=\"Workflow-Ausführungen\" />"
    },
    {
      "file": "src/pages/FeatureView.tsx",
      "line": 71,
      "column": 45,
      "kind": "string_literal",
      "text": "Workflow-Ausführungen",
      "context": "string literal",
      "line_content": "  <PlaceholderView title=\"Runs\" description=\"Workflow-Ausführungen\" />"
    },
    {
      "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": "  <PlaceholderView title=\"Dateien\" description=\"Workflow-Dateien\" />"
    },
    {
      "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": "  <PlaceholderView title=\"Chatbot Einstellungen\" description=\"Konfiguration des Chatbots\" />"
    },
    {
      "file": "src/pages/FeatureView.tsx",
      "line": 82,
      "column": 62,
      "kind": "string_literal",
      "text": "Konfiguration des Chatbots",
      "context": "string literal",
      "line_content": "  <PlaceholderView title=\"Chatbot Einstellungen\" description=\"Konfiguration des Chatbots\" />"
    },
    {
      "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": "    <h2>Seite nicht gefunden</h2>"
    },
    {
      "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": "    <p>Diese View existiert nicht oder wurde noch nicht implementiert.</p>"
    },
    {
      "file": "src/pages/FeatureView.tsx",
      "line": 95,
      "column": 9,
      "kind": "jsx_text",
      "text": "Zugriff verweigert",
      "context": "between tags, user-visible text node",
      "line_content": "    <h2>Zugriff verweigert</h2>"
    },
    {
      "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": "    <p>Du hast keine Berechtigung für diese Ansicht.</p>"
    },
    {
      "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": "          <h2 className={styles.sectionTitle}>Your data rights</h2>"
    },
    {
      "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": "              <h3>Access (Article 15)</h3>"
    },
    {
      "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": "              <p>Download a full export of your account data.</p>"
    },
    {
      "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": "              <h3>Portability (Article 20)</h3>"
    },
    {
      "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": "              <p>Download a machine-readable JSON-LD export.</p>"
    },
    {
      "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": "              <h3>Erasure (Article 17)</h3>"
    },
    {
      "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": "              <p>Permanently delete your account and all associated data.</p>"
    },
    {
      "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": "          <h2 className={styles.sectionTitle}>Processing information</h2>"
    },
    {
      "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 && <p className={styles.mutedText}>Loading consent info...</p>}"
    },
    {
      "file": "src/pages/GDPR.tsx",
      "line": 284,
      "column": 21,
      "kind": "jsx_text",
      "text": "Data collected",
      "context": "between tags, user-visible text node",
      "line_content": "                <h3>Data collected</h3>"
    },
    {
      "file": "src/pages/GDPR.tsx",
      "line": 304,
      "column": 21,
      "kind": "jsx_text",
      "text": "Your rights",
      "context": "between tags, user-visible text node",
      "line_content": "                <h3>Your rights</h3>"
    },
    {
      "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": "            <p>Einladung wird überprüft...</p>"
    },
    {
      "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": "            <h1>Ungültige Einladung</h1>"
    },
    {
      "file": "src/pages/InvitePage.tsx",
      "line": 177,
      "column": 39,
      "kind": "string_literal",
      "text": "Diese Einladung ist nicht gültig.",
      "context": "string literal",
      "line_content": "            <p>{validation?.reason || 'Diese Einladung ist nicht gültig.'}</p>"
    },
    {
      "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": "            <p>Sie wurden erfolgreich zum Mandanten hinzugefügt.</p>"
    },
    {
      "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": "            <p className={styles.redirectMessage}>Sie werden weitergeleitet...</p>"
    },
    {
      "file": "src/pages/InvitePage.tsx",
      "line": 211,
      "column": 17,
      "kind": "jsx_text",
      "text": "Falsche Anmeldung",
      "context": "between tags, user-visible text node",
      "line_content": "            <h1>Falsche Anmeldung</h1>"
    },
    {
      "file": "src/pages/InvitePage.tsx",
      "line": 214,
      "column": 61,
      "kind": "string_literal",
      "text": "anderer Benutzer",
      "context": "string literal",
      "line_content": "              Sie sind als <strong>{cachedUser?.username || 'anderer Benutzer'}</strong> 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": "            <p>Bitte melden Sie sich ab und mit dem richtigen Konto wieder an.</p>"
    },
    {
      "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": "            <h1>Einladung annehmen</h1>"
    },
    {
      "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": "          <h1>Einladung annehmen</h1>"
    },
    {
      "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": "                  <span>Sie haben eine ausstehende Einladung. Bitte melden Sie sich an, um diese anzunehmen.</span>"
    },
    {
      "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": "                <span>Du hast noch kein Konto?</span>"
    },
    {
      "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": "            <h2 className={styles.title}>Passwort zurücksetzen</h2>"
    },
    {
      "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": "                    <p>Geben Sie Ihren Benutzernamen ein. Falls ein Konto existiert, erhalten Sie einen Link zum Zurücksetzen des Passworts an Ihre hinterlegte E-Mail-Adresse.</p>"
    },
    {
      "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": "                <span>Zurück zum</span>"
    },
    {
      "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": "                  <span>Sie haben eine ausstehende Einladung. Nach der Registrierung und Anmeldung können Sie diese annehmen.</span>"
    },
    {
      "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": "                    <label className={fullNameFocused || formData.fullName ? styles.focusedLabel : styles.label}>Vollständiger Name</label>"
    },
    {
      "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": "                    <p>Nach der Registrierung erhalten Sie eine E-Mail mit einem Link zum Setzen Ihres Passworts.</p>"
    },
    {
      "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": "                <span>Bereits registriert?</span>"
    },
    {
      "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": "              <h2 className={styles.title}>Neues Passwort setzen</h2>"
    },
    {
      "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": "                  <span>oder zurück zum</span>"
    },
    {
      "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": "            <h2 className={styles.title}>Neues Passwort setzen</h2>"
    },
    {
      "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": "                  <div className={styles.passwordHint}>Mindestens 8 Zeichen</div>"
    },
    {
      "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": "                    <label className={passwordFocused || password ? styles.focusedLabel : styles.label}>Neues Passwort</label>"
    },
    {
      "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": "                    <label className={confirmPasswordFocused || confirmPassword ? styles.focusedLabel : styles.label}>Passwort bestätigen</label>"
    },
    {
      "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": "                <span>Zurück zum</span>"
    },
    {
      "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": "          <h2>Profil bearbeiten</h2>"
    },
    {
      "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": "        <h2 className={styles.sectionTitle}>STT-Sprache (Spracheingabe)</h2>"
    },
    {
      "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": "            <label className={styles.settingLabel}>Sprache fuer Spracherkennung</label>"
    },
    {
      "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": "            <p className={styles.settingDescription}>Wird fuer die Sprache-zu-Text-Erkennung verwendet.</p>"
    },
    {
      "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": "        <h2 className={styles.sectionTitle}>TTS-Stimmen (Sprachausgabe)</h2>"
    },
    {
      "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": "        <h2 className={styles.sectionTitle}>Platzhalter-Mappings (lokal)</h2>"
    },
    {
      "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": "          <strong>Mandant → AI-Workspace-Instanz → Einstellungen → Tab „Neutralisierung“</strong> (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": "        <p className={styles.subtitle}>Persoenliche Einstellungen und Praeferenzen</p>"
    },
    {
      "file": "src/pages/Settings.tsx",
      "line": 511,
      "column": 58,
      "kind": "jsx_text",
      "text": "Profil bearbeiten",
      "context": "between tags, user-visible text node",
      "line_content": "                  <label className={styles.settingLabel}>Profil bearbeiten</label>"
    },
    {
      "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": "                  <p className={styles.settingDescription}>Aendern Sie Ihren Namen und Ihre E-Mail-Adresse.</p>"
    },
    {
      "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": "              <div className={styles.settingInfo}><label className={styles.settingLabel}>Theme</label><p className={styles.settingDescription}>Waehlen Sie zwischen hellem und dunklem Design.</p></div>"
    },
    {
      "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": "              <div className={styles.settingInfo}><label className={styles.settingLabel}>GDPR / Privacy</label><p className={styles.settingDescription}>Datenexport, Portabilität und Kontolöschung.</p></div>"
    },
    {
      "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": "              <div className={styles.settingInfo}><label className={styles.settingLabel}>GDPR / Privacy</label><p className={styles.settingDescription}>Datenexport, Portabilität und Kontolöschung.</p></div>"
    },
    {
      "file": "src/pages/Settings.tsx",
      "line": 585,
      "column": 123,
      "kind": "jsx_text",
      "text": "GDPR öffnen",
      "context": "between tags, user-visible text node",
      "line_content": "              <div className={styles.settingControl}><Link className={`${styles.button} ${styles.linkButton}`} to=\"/gdpr\">GDPR öffnen</Link></div>"
    },
    {
      "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": "        <h1>{currentLanguage === 'de' ? 'Feature Store' : currentLanguage === 'fr' ? 'Feature Store' : 'Feature Store'}</h1>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler: {error}</p>"
    },
    {
      "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": "                <option value=\"\">-- Mandant wählen --</option>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>"
    },
    {
      "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": "                <span className={hubStyles.statsLabel}>Rollen (max)</span>"
    },
    {
      "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": "                <span>Lade Instanzen...</span>"
    },
    {
      "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": "                <h3 className={styles.emptyTitle}>Keine Feature-Instanzen</h3>"
    },
    {
      "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": "                      <span>{getFeatureLabel(features.find((f) => f.code === inst.featureCode) || { code: inst.featureCode, label: inst.featureCode })}</span>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler: {error}</p>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Verwalten Sie Feature-Instanzen für jeden Mandanten</p>"
    },
    {
      "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": "            <option value=\"\">-- Mandant wählen --</option>"
    },
    {
      "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": "          <span>Verfügbare Features: </span>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Neue Feature-Instanz erstellen</h2>"
    },
    {
      "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": "                <p>Keine Features verfügbar. Bitte wenden Sie sich an den System-Administrator.</p>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Feature-Instanz bearbeiten</h2>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler: {error}</p>"
    },
    {
      "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": "          <h1 className={styles.pageTitle}>Feature Instanz Benutzer</h1>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Verwalten Sie Benutzerzugriffe auf Feature-Instanzen</p>"
    },
    {
      "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": "            <option value=\"\">-- Mandant / Feature-Instanz wählen --</option>"
    },
    {
      "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": "          <span>Verfügbare Rollen: </span>"
    },
    {
      "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": "          <span>Diese Instanz hat noch keine Rollen. Bitte synchronisieren Sie die Rollen zuerst unter \"Feature-Instanzen\".</span>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Keine Feature-Instanz ausgewählt</h3>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Benutzer zur Feature-Instanz hinzufügen</h2>"
    },
    {
      "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": "                <p>Alle Benutzer haben bereits Zugriff auf diese Feature-Instanz.</p>"
    },
    {
      "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": "                <p>Diese Feature-Instanz hat keine Rollen. Bitte synchronisieren Sie zuerst die Rollen.</p>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Rollen bearbeiten: {editingUser.username}</h2>"
    },
    {
      "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": "          <h1 className={styles.pageTitle}>Feature Rollen & Rechte</h1>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Template-Rollen und deren Berechtigungen für Feature-Instanzen verwalten</p>"
    },
    {
      "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": "            <option value=\"\">-- Feature wählen --</option>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Kein Feature ausgewählt</h3>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Neue Feature-Rolle erstellen</h2>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Feature-Rolle bearbeiten</h2>"
    },
    {
      "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": "          <span title={emailSent ? 'Email wurde gesendet' : 'Email nicht gesendet'}>"
    },
    {
      "file": "src/pages/admin/AdminInvitationsPage.tsx",
      "line": 104,
      "column": 61,
      "kind": "string_literal",
      "text": "Email nicht gesendet",
      "context": "string literal",
      "line_content": "          <span title={emailSent ? 'Email wurde gesendet' : 'Email nicht gesendet'}>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler: {error}</p>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Erstellen und verwalten Sie Einladungen für neue Benutzer</p>"
    },
    {
      "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": "            <option value=\"\">-- Mandant wählen --</option>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Neue Einladung erstellen</h2>"
    },
    {
      "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": "                  <span>Lade Rollen...</span>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "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": "          <h1 className={styles.pageTitle}>Gateway Logs</h1>"
    },
    {
      "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 && <span className={logStyles.logDirHint}> — {logDir}</span>}"
    },
    {
      "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": "          <label className={logStyles.controlLabel}>Einträge</label>"
    },
    {
      "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": "            <p className={styles.emptyTitle}>Keine Logs geladen</p>"
    },
    {
      "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": "            <span>Logs werden geladen...</span>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler beim Laden: {error}</p>"
    },
    {
      "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": "          <span>Lade Rollen...</span>"
    },
    {
      "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": "          <p>Keine Rollen gefunden</p>"
    },
    {
      "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": "                  <span>{cleanupPhase === 'idle' ? 'Analysiere Duplikate...' : 'Bereinige Duplikate...'}</span>"
    },
    {
      "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx",
      "line": 402,
      "column": 80,
      "kind": "string_literal",
      "text": "Bereinige Duplikate...",
      "context": "string literal",
      "line_content": "                  <span>{cleanupPhase === 'idle' ? 'Analysiere Duplikate...' : 'Bereinige Duplikate...'}</span>"
    },
    {
      "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": "                      <span><strong>{cleanupResult.deletedCount}</strong> doppelte Regeln wurden erfolgreich entfernt.</span>"
    },
    {
      "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": "                      <span>Keine Duplikate gefunden. Alles sauber!</span>"
    },
    {
      "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": "                      <span>Keine fehlerhaften Template-Rollen-Zuweisungen.</span>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler: {error}</p>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Verwalten Sie System-, globale und mandantenspezifische Rollen</p>"
    },
    {
      "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": "            <option value=\"\">-- Mandant wählen --</option>"
    },
    {
      "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": "            <option value=\"all\">Alle (inkl. Templates)</option>"
    },
    {
      "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": "            <option value=\"global\">Nur Templates</option>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Neue Rolle erstellen</h2>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Rolle bearbeiten: {editingRole.roleLabel}</h2>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/admin/AdminMandateRolesPage.tsx",
      "line": 504,
      "column": 95,
      "kind": "string_literal",
      "text": "Template (global)",
      "context": "string literal",
      "line_content": "                      Geltungsbereich: <strong>{editingRole.mandateId ? 'Mandanten-Instanz' : 'Template (global)'}</strong>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler beim Laden der Mandanten: {error}</p>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Verwalten Sie alle Mandanten im System</p>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Neuer Mandant</h2>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Mandant bearbeiten</h2>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "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": "            <span>{overview.sysAdminNote || 'Dieser Benutzer ist SysAdmin und hat vollen Systemzugriff.'}</span>"
    },
    {
      "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": "          <p className={styles.emptyHint}>Keine Mandate-Zuordnungen vorhanden.</p>"
    },
    {
      "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": "                        <p className={styles.emptyHint}>Keine Rollen direkt am Mandanten.</p>"
    },
    {
      "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": "                        <p className={styles.emptyHint}>Keine Feature-Instanzen zugewiesen.</p>"
    },
    {
      "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": "          <span>UI-Zugriffsrechte bestimmen, welche Seiten und Views der Benutzer sehen kann.</span>"
    },
    {
      "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": "            <h3 className={styles.emptyTitle}>Keine UI-Berechtigungen</h3>"
    },
    {
      "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": "                <th style={{ textAlign: 'left', padding: '0.75rem', color: 'var(--text-secondary)' }}>Gewährt durch</th>"
    },
    {
      "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": "            <h3 className={styles.emptyTitle}>Keine Daten-Berechtigungen</h3>"
    },
    {
      "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": "                <th style={{ textAlign: 'center', padding: '0.75rem', color: 'var(--text-secondary)', width: '70px' }}>Löschen</th>"
    },
    {
      "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": "                <th style={{ textAlign: 'left', padding: '0.75rem', color: 'var(--text-secondary)' }}>Gewährt durch</th>"
    },
    {
      "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": "          <span>Ressourcen-Zugriffsrechte bestimmen, welche System-Ressourcen (z.B. AI-Modelle) der Benutzer verwenden kann.</span>"
    },
    {
      "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": "            <h3 className={styles.emptyTitle}>Keine Ressourcen-Berechtigungen</h3>"
    },
    {
      "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": "                <th style={{ textAlign: 'left', padding: '0.75rem', color: 'var(--text-secondary)' }}>Gewährt durch</th>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler: {error}</p>"
    },
    {
      "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": "          <h1 className={styles.pageTitle}>Benutzer-Zugriffsübersicht</h1>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Zeigt alle Berechtigungen eines Benutzers an</p>"
    },
    {
      "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": "            <option value=\"\">-- Benutzer wählen --</option>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Benutzer auswählen</h3>"
    },
    {
      "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": "          <span>Lade Zugriffsübersicht...</span>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler: {error}</p>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Verwalten Sie, welche Benutzer Zugriff auf welche Mandanten haben</p>"
    },
    {
      "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": "            <option value=\"\">-- Mandant wählen --</option>"
    },
    {
      "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": "          <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Benutzer zum Mandanten hinzufügen</h2>"
    },
    {
      "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": "                <p>Alle Benutzer sind bereits diesem Mandanten zugewiesen.</p>"
    },
    {
      "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": "                  <span>Lade Rollen...</span>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Rollen bearbeiten: {editingUser.username}</h2>"
    },
    {
      "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": "          <p className={styles.errorMessage}>Fehler beim Laden der Benutzer: {error}</p>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Verwalten Sie alle Benutzer im System</p>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Neuer Benutzer</h2>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "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": "              <h2 className={styles.modalTitle}>Benutzer bearbeiten</h2>"
    },
    {
      "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": "                  <span>Lade Formular...</span>"
    },
    {
      "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": "          <span>Web Research aktivieren (Tavily)</span>"
    },
    {
      "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": "              <span>Lade Benutzer...</span>"
    },
    {
      "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": "          <button type=\"button\" className={styles.modalClose} onClick={onClose} aria-label=\"Schließen\">"
    },
    {
      "file": "src/pages/admin/InstanceDetailModal.tsx",
      "line": 315,
      "column": 49,
      "kind": "jsx_text",
      "text": "Benutzer hinzufügen",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Benutzer hinzufügen</h2>"
    },
    {
      "file": "src/pages/admin/InstanceDetailModal.tsx",
      "line": 322,
      "column": 20,
      "kind": "jsx_text",
      "text": "Alle Mandanten-Benutzer haben bereits Zugriff.",
      "context": "between tags, user-visible text node",
      "line_content": "                <p>Alle Mandanten-Benutzer haben bereits Zugriff.</p>"
    },
    {
      "file": "src/pages/admin/InstanceDetailModal.tsx",
      "line": 331,
      "column": 36,
      "kind": "string_literal",
      "text": "Hinzufügen",
      "context": "string literal",
      "line_content": "                  submitButtonText=\"Hinzufügen\""
    },
    {
      "file": "src/pages/admin/InstanceDetailModal.tsx",
      "line": 344,
      "column": 49,
      "kind": "jsx_text",
      "text": "Rollen: {editingUser.username}",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Rollen: {editingUser.username}</h2>"
    },
    {
      "file": "src/pages/admin/InstanceHierarchyView.tsx",
      "line": 129,
      "column": 29,
      "kind": "string_literal",
      "text": "Benutzer verwalten",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                      title=\"Benutzer verwalten\""
    },
    {
      "file": "src/pages/admin/InstanceHierarchyView.tsx",
      "line": 189,
      "column": 17,
      "kind": "jsx_text",
      "text": "Lade Hierarchie und Benutzer...",
      "context": "between tags, user-visible text node",
      "line_content": "          <span>Lade Hierarchie und Benutzer...</span>"
    },
    {
      "file": "src/pages/admin/InstanceHierarchyView.tsx",
      "line": 266,
      "column": 9,
      "kind": "string_literal",
      "text": "Keine Rollen",
      "context": "string literal",
      "line_content": "      : 'Keine Rollen';"
    },
    {
      "file": "src/pages/admin/InstanceHierarchyView.tsx",
      "line": 286,
      "column": 56,
      "kind": "jsx_text",
      "text": "Zugang: {statusText}",
      "context": "between tags, user-visible text node",
      "line_content": "        <div className={hierarchyStyles.tooltipStatus}>Zugang: {statusText}</div>"
    },
    {
      "file": "src/pages/admin/PermissionMatrix.tsx",
      "line": 38,
      "column": 14,
      "kind": "string_literal",
      "text": "Benutzer entfernen",
      "context": "string literal",
      "line_content": "      title: 'Benutzer entfernen',"
    },
    {
      "file": "src/pages/admin/PermissionMatrix.tsx",
      "line": 51,
      "column": 12,
      "kind": "jsx_text",
      "text": "Keine Rollen in dieser Instanz. Bitte zuerst Rollen synchronisieren.",
      "context": "between tags, user-visible text node",
      "line_content": "        <p>Keine Rollen in dieser Instanz. Bitte zuerst Rollen synchronisieren.</p>"
    },
    {
      "file": "src/pages/admin/PermissionMatrix.tsx",
      "line": 114,
      "column": 29,
      "kind": "string_literal",
      "text": "Rollen bearbeiten",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                      title=\"Rollen bearbeiten\""
    },
    {
      "file": "src/pages/admin/PermissionMatrix.tsx",
      "line": 123,
      "column": 29,
      "kind": "string_literal",
      "text": "Aus Instanz entfernen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                      title=\"Aus Instanz entfernen\""
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 5,
      "column": 27,
      "kind": "string_literal",
      "text": "Invite to mandate",
      "context": "string literal",
      "line_content": " * 1. Choose invite type: \"Invite to mandate\" OR \"Invite to feature instance\""
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 5,
      "column": 50,
      "kind": "string_literal",
      "text": "Invite to feature instance",
      "context": "string literal",
      "line_content": " * 1. Choose invite type: \"Invite to mandate\" OR \"Invite to feature instance\""
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 67,
      "column": 11,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #C5D9E8)",
      "context": "string literal",
      "line_content": "  border: '1px solid var(--border-color, #C5D9E8)',"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 172,
      "column": 16,
      "kind": "string_literal",
      "text": "Bitte mindestens eine E-Mail-Adresse oder einen Benutzernamen angeben.",
      "context": "string literal",
      "line_content": "      setError('Bitte mindestens eine E-Mail-Adresse oder einen Benutzernamen angeben.');"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 178,
      "column": 16,
      "kind": "string_literal",
      "text": "Diese E-Mail ist bereits in der Liste",
      "context": "string literal",
      "line_content": "      setError('Diese E-Mail ist bereits in der Liste');"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 182,
      "column": 16,
      "kind": "string_literal",
      "text": "Dieser Benutzername ist bereits in der Liste",
      "context": "string literal",
      "line_content": "      setError('Dieser Benutzername ist bereits in der Liste');"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 197,
      "column": 16,
      "kind": "string_literal",
      "text": "Bitte wählen Sie einen Benutzer",
      "context": "string literal",
      "line_content": "      setError('Bitte wählen Sie einen Benutzer');"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 204,
      "column": 16,
      "kind": "string_literal",
      "text": "Dieser Benutzer ist bereits in der Liste",
      "context": "string literal",
      "line_content": "      setError('Dieser Benutzer ist bereits in der Liste');"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 234,
      "column": 16,
      "kind": "string_literal",
      "text": "Bitte wählen Sie eine Feature-Instanz aus.",
      "context": "string literal",
      "line_content": "      setError('Bitte wählen Sie eine Feature-Instanz aus.');"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 273,
      "column": 63,
      "kind": "string_literal",
      "text": "Fehler beim Versand",
      "context": "string literal",
      "line_content": "      setError(err?.response?.data?.detail || err?.message || 'Fehler beim Versand');"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 295,
      "column": 15,
      "kind": "string_literal",
      "text": "Mandant & Instanz",
      "context": "string literal",
      "line_content": "    ? ['Art', 'Mandant & Instanz', 'Einladungen', 'Zusammenfassung']"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 356,
      "column": 66,
      "kind": "jsx_text",
      "text": "Wohin möchten Sie einladen?",
      "context": "between tags, user-visible text node",
      "line_content": "          <h3 style={{ margin: '0 0 16px 0', fontSize: '16px' }}>Wohin möchten Sie einladen?</h3>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 397,
      "column": 41,
      "kind": "string_literal",
      "text": "Mandant auswählen",
      "context": "string literal",
      "line_content": "            {inviteType === 'mandate' ? 'Mandant auswählen' : 'Mandant und Feature-Instanz auswählen'}"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 397,
      "column": 63,
      "kind": "string_literal",
      "text": "Mandant und Feature-Instanz auswählen",
      "context": "string literal",
      "line_content": "            {inviteType === 'mandate' ? 'Mandant auswählen' : 'Mandant und Feature-Instanz auswählen'}"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 400,
      "column": 49,
      "kind": "jsx_text",
      "text": "Mandant *",
      "context": "between tags, user-visible text node",
      "line_content": "            <label className={styles.formLabel}>Mandant *</label>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 411,
      "column": 32,
      "kind": "jsx_text",
      "text": "-- Mandant wählen --",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"\">-- Mandant wählen --</option>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 419,
      "column": 51,
      "kind": "jsx_text",
      "text": "Feature-Instanz *",
      "context": "between tags, user-visible text node",
      "line_content": "              <label className={styles.formLabel}>Feature-Instanz *</label>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 421,
      "column": 81,
      "kind": "jsx_text",
      "text": "Keine Feature-Instanzen für diesen Mandanten vorhanden.",
      "context": "between tags, user-visible text node",
      "line_content": "                <p style={{ fontSize: '13px', color: 'var(--text-secondary)' }}>Keine Feature-Instanzen für diesen Mandanten vorhanden.</p>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 432,
      "column": 36,
      "kind": "jsx_text",
      "text": "-- Feature-Instanz wählen --",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"\">-- Feature-Instanz wählen --</option>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 435,
      "column": 61,
      "kind": "string_literal",
      "text": " (deaktiviert)",
      "context": "string literal",
      "line_content": "                    const suffix = inst.enabled === false ? ' (deaktiviert)' : '';"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 445,
      "column": 71,
      "kind": "jsx_text",
      "text": "setStep(1)}>&larr; Zurück",
      "context": "between tags, user-visible text node",
      "line_content": "            <button className={styles.secondaryButton} onClick={() => setStep(1)}>&larr; Zurück</button>"
    },
    {
      "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": "            <h3 style={{ margin: '0 0 8px 0', fontSize: '16px' }}>Einladungen hinzufügen</h3>"
    },
    {
      "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": "                  <label className={styles.formLabel}>E-Mail (optional)</label>"
    },
    {
      "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": "                  <label className={styles.formLabel}>Benutzername (optional)</label>"
    },
    {
      "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": "                    <label className={styles.formLabel}>Rolle{inviteType === 'featureInstance' ? ' (pro Instanz)' : ''} *</label>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 512,
      "column": 98,
      "kind": "string_literal",
      "text": " (pro Instanz)",
      "context": "string literal",
      "line_content": "                    <label className={styles.formLabel}>Rolle{inviteType === 'featureInstance' ? ' (pro Instanz)' : ''} *</label>"
    },
    {
      "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": "                  <label className={styles.formLabel}>Bestehender Benutzer *</label>"
    },
    {
      "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": "                    <option value=\"\">-- Benutzer wählen --</option>"
    },
    {
      "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 && <p style={{ fontSize: '12px', color: 'var(--text-secondary)', marginTop: '4px' }}>Keine weiteren Benutzer verfügbar.</p>}"
    },
    {
      "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": "                    <label className={styles.formLabel}>Rolle *</label>"
    },
    {
      "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": "              <p style={{ color: 'var(--text-secondary)', fontSize: '13px', marginBottom: '16px' }}>Noch keine Einladungen hinzugefügt.</p>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 649,
      "column": 71,
      "kind": "jsx_text",
      "text": "setStep(2)}>&larr; Zurück",
      "context": "between tags, user-visible text node",
      "line_content": "            <button className={styles.secondaryButton} onClick={() => setStep(2)}>&larr; Zurück</button>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 666,
      "column": 63,
      "kind": "string_literal",
      "text": "Einladung zum Mandanten",
      "context": "string literal",
      "line_content": "            <strong>Art:</strong> {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": "            <strong>Art:</strong> {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": "            <strong>Einladungen ({invitees.length}):</strong>"
    },
    {
      "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx",
      "line": 689,
      "column": 71,
      "kind": "jsx_text",
      "text": "setStep(3)}>&larr; Zurück",
      "context": "between tags, user-visible text node",
      "line_content": "            <button className={styles.secondaryButton} onClick={() => setStep(3)}>&larr; Zurück</button>"
    },
    {
      "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": "        <label className={styles.formLabel}>Benutzer * (mehrfach möglich)</label>"
    },
    {
      "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": "          <label className={styles.formLabel}>Rollen (für alle ausgewählten Benutzer)</label>"
    },
    {
      "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": "          <p className={styles.pageSubtitle}>Schritt-für-Schritt Wizard zur Mandanten-Konfiguration</p>"
    },
    {
      "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": "          <h3 style={{ fontSize: '15px', fontWeight: 600, marginBottom: '16px', marginTop: 0 }}>Mandant auswählen oder erstellen</h3>"
    },
    {
      "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": "                  <span>Formular wird geladen...</span>"
    },
    {
      "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)}>&larr; Zurück",
      "context": "between tags, user-visible text node",
      "line_content": "            <button className={styles.secondaryButton} onClick={() => setStep(1)}>&larr; Zurück</button>"
    },
    {
      "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": "            <label className={styles.formLabel}>Feature filtern:</label>"
    },
    {
      "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": "              <option value=\"\">Alle Features</option>"
    },
    {
      "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": "                <label className={styles.formLabel}>Feature *</label>"
    },
    {
      "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": "                  <option value=\"\">-- Feature wählen --</option>"
    },
    {
      "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)}>&larr; Zurück",
      "context": "between tags, user-visible text node",
      "line_content": "            <button className={styles.secondaryButton} onClick={() => setStep(2)}>&larr; Zurück</button>"
    },
    {
      "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)}>&larr; Zurück",
      "context": "between tags, user-visible text node",
      "line_content": "            <button className={styles.secondaryButton} onClick={() => setStep(3)}>&larr; Zurück</button>"
    },
    {
      "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": "          <h2 className={styles.modalTitle}>Neue Feature-Instanz</h2>"
    },
    {
      "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": "          <button type=\"button\" className={styles.modalClose} onClick={onClose} aria-label=\"Schließen\">"
    },
    {
      "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx",
      "line": 243,
      "column": 54,
      "kind": "jsx_text",
      "text": "Keine Mandanten-Benutzer vorhanden.",
      "context": "between tags, user-visible text node",
      "line_content": "                <p className={wizardStyles.stepText}>Keine Mandanten-Benutzer vorhanden.</p>"
    },
    {
      "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx",
      "line": 261,
      "column": 44,
      "kind": "jsx_text",
      "text": "— Keine Rolle —",
      "context": "between tags, user-visible text node",
      "line_content": "                          <option value=\"\">— Keine Rolle —</option>"
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 237,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Verbindungen: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Verbindungen: {error}</p>"
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 253,
      "column": 45,
      "kind": "string_literal",
      "text": ", ClickUp",
      "context": "string literal",
      "line_content": "            {isClickupConnectionUiEnabled ? ', ClickUp' : ''})"
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 261,
      "column": 19,
      "kind": "string_literal",
      "text": "Microsoft Admin Consent — erteilt der App die nötigen Berechtigungen für den gesamten Tenant",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            title=\"Microsoft Admin Consent — erteilt der App die nötigen Berechtigungen für den gesamten Tenant\""
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 294,
      "column": 25,
      "kind": "string_literal",
      "text": "ClickUp-Konto verbinden",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"ClickUp-Konto verbinden\""
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 324,
      "column": 24,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "                title: 'Löschen',"
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 343,
      "column": 24,
      "kind": "string_literal",
      "text": "Token erneuern",
      "context": "string literal",
      "line_content": "                title: 'Token erneuern',"
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 357,
      "column": 26,
      "kind": "string_literal",
      "text": "Keine Verbindungen gefunden",
      "context": "string literal",
      "line_content": "            emptyMessage=\"Keine Verbindungen gefunden\""
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 366,
      "column": 49,
      "kind": "jsx_text",
      "text": "Verbindung bearbeiten",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Verbindung bearbeiten</h2>"
    },
    {
      "file": "src/pages/basedata/ConnectionsPage.tsx",
      "line": 378,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 148,
      "column": 14,
      "kind": "string_literal",
      "text": "Created By",
      "context": "object property label: (e.g. table column)",
      "line_content": "      label: 'Created By',"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 218,
      "column": 11,
      "kind": "string_literal",
      "text": "Upload erfolgreich",
      "context": "string literal",
      "line_content": "          'Upload erfolgreich',"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 222,
      "column": 19,
      "kind": "string_literal",
      "text": "Upload fehlgeschlagen",
      "context": "string literal",
      "line_content": "        showError('Upload fehlgeschlagen', `${errorCount} Datei(en) konnten nicht hochgeladen werden`);"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 228,
      "column": 36,
      "kind": "string_literal",
      "text": "Neuer Ordnername:",
      "context": "string literal",
      "line_content": "    const name = await promptInput('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 228,
      "column": 66,
      "kind": "string_literal",
      "text": "Neuer Ordner",
      "context": "string literal",
      "line_content": "    const name = await promptInput('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 303,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Dateien: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Dateien: {error}</p>"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 344,
      "column": 24,
      "kind": "string_literal",
      "text": "1px solid var(--color-border, #e0e0e0)",
      "context": "string literal",
      "line_content": "          borderRight: '1px solid var(--color-border, #e0e0e0)',"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 385,
      "column": 47,
      "kind": "string_literal",
      "text": "background 0.15s",
      "context": "string literal",
      "line_content": "            transition: isDragging ? 'none' : 'background 0.15s',"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 398,
      "column": 27,
      "kind": "string_literal",
      "text": "1px solid var(--color-border, #e0e0e0)",
      "context": "string literal",
      "line_content": "            borderBottom: '1px solid var(--color-border, #e0e0e0)',"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 406,
      "column": 64,
      "kind": "string_literal",
      "text": "Datei hochladen",
      "context": "string literal",
      "line_content": "                <FaUpload /> {uploadingFile ? 'Uploading...' : 'Datei hochladen'}"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 438,
      "column": 28,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "                    title: 'Löschen',"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 468,
      "column": 30,
      "kind": "string_literal",
      "text": "Keine Dateien gefunden",
      "context": "string literal",
      "line_content": "                emptyMessage=\"Keine Dateien gefunden\""
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 479,
      "column": 49,
      "kind": "jsx_text",
      "text": "Datei bearbeiten",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Datei bearbeiten</h2>"
    },
    {
      "file": "src/pages/basedata/FilesPage.tsx",
      "line": 486,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 77,
      "column": 14,
      "kind": "string_literal",
      "text": "Created By",
      "context": "object property label: (e.g. table column)",
      "line_content": "      label: 'Created By',"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 161,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Prompts: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Prompts: {error}</p>"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 175,
      "column": 46,
      "kind": "jsx_text",
      "text": "Prompt-Templates verwalten",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.pageSubtitle}>Prompt-Templates verwalten</p>"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 221,
      "column": 22,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "              title: 'Löschen',"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 234,
      "column": 24,
      "kind": "string_literal",
      "text": "Keine Prompts gefunden",
      "context": "string literal",
      "line_content": "          emptyMessage=\"Keine Prompts gefunden\""
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 243,
      "column": 49,
      "kind": "jsx_text",
      "text": "Neuer Prompt",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Neuer Prompt</h2>"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 255,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 277,
      "column": 49,
      "kind": "jsx_text",
      "text": "Prompt bearbeiten",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Prompt bearbeiten</h2>"
    },
    {
      "file": "src/pages/basedata/PromptsPage.tsx",
      "line": 289,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 11,
      "column": 32,
      "kind": "string_literal",
      "text": "Mandant",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'mandateName', label: 'Mandant', type: 'text', sortable: true, filterable: true, width: 180 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 12,
      "column": 30,
      "kind": "string_literal",
      "text": "Plan",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'planTitle', label: 'Plan', type: 'text', sortable: true, filterable: true, width: 180 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 13,
      "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: 110 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 14,
      "column": 30,
      "kind": "string_literal",
      "text": "Wiederkehrend",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'recurring', label: 'Wiederkehrend', type: 'boolean', sortable: true, filterable: true, width: 120 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 15,
      "column": 32,
      "kind": "string_literal",
      "text": "User",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'activeUsers', label: 'User', type: 'number', sortable: true, width: 70 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 16,
      "column": 36,
      "kind": "string_literal",
      "text": "Instanzen",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'activeInstances', label: 'Instanzen', type: 'number', sortable: true, width: 90 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 17,
      "column": 38,
      "kind": "string_literal",
      "text": "Revenue/Mt (CHF)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'monthlyRevenueCHF', label: 'Revenue/Mt (CHF)', type: 'number', sortable: true, width: 140 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 18,
      "column": 30,
      "kind": "string_literal",
      "text": "Gestartet",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'startedAt', label: 'Gestartet', type: 'date', sortable: true, filterable: true, width: 130 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 19,
      "column": 37,
      "kind": "string_literal",
      "text": "Periodenende",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'currentPeriodEnd', label: 'Periodenende', type: 'date', sortable: true, filterable: true, width: 130 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 20,
      "column": 44,
      "kind": "string_literal",
      "text": "Preis/User",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'snapshotPricePerUserCHF', label: 'Preis/User', type: 'number', sortable: true, width: 100 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 21,
      "column": 48,
      "kind": "string_literal",
      "text": "Preis/Instanz",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'snapshotPricePerInstanceCHF', label: 'Preis/Instanz', type: 'number', sortable: true, width: 110 },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 31,
      "column": 23,
      "kind": "string_literal",
      "text": "Sofort kündigen",
      "context": "string literal",
      "line_content": "      { confirmLabel: 'Sofort kündigen', cancelLabel: 'Abbrechen', variant: 'danger' },"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 46,
      "column": 13,
      "kind": "jsx_text",
      "text": "Subscription-Übersicht",
      "context": "between tags, user-visible text node",
      "line_content": "        <h1>Subscription-Übersicht</h1>"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 47,
      "column": 40,
      "kind": "jsx_text",
      "text": "Alle Abonnements aller Mandanten",
      "context": "between tags, user-visible text node",
      "line_content": "        <p className={styles.subtitle}>Alle Abonnements aller Mandanten</p>"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 63,
      "column": 22,
      "kind": "string_literal",
      "text": "Sofort kündigen",
      "context": "string literal",
      "line_content": "              title: 'Sofort kündigen',"
    },
    {
      "file": "src/pages/billing/AdminSubscriptionsPage.tsx",
      "line": 69,
      "column": 24,
      "kind": "string_literal",
      "text": "Keine Subscriptions vorhanden.",
      "context": "string literal",
      "line_content": "          emptyMessage=\"Keine Subscriptions vorhanden.\""
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 67,
      "column": 24,
      "kind": "jsx_text",
      "text": "-- Mandant wählen --",
      "context": "between tags, user-visible text node",
      "line_content": "      <option value=\"\">-- Mandant wählen --</option>"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 119,
      "column": 43,
      "kind": "string_literal",
      "text": "Einstellungen gespeichert!",
      "context": "string literal",
      "line_content": "      setMessage({ type: 'success', text: 'Einstellungen gespeichert!' });"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 121,
      "column": 56,
      "kind": "string_literal",
      "text": "Fehler beim Speichern",
      "context": "string literal",
      "line_content": "      setMessage({ type: 'error', text: err.message || 'Fehler beim Speichern' });"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 182,
      "column": 22,
      "kind": "jsx_text",
      "text": "Betrag pro Nachladung (CHF)",
      "context": "between tags, user-visible text node",
      "line_content": "              <label>Betrag pro Nachladung (CHF)</label>"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 384,
      "column": 19,
      "kind": "string_literal",
      "text": "Betrag muss positiv sein",
      "context": "string literal",
      "line_content": "      setLocalMsg('Betrag muss positiv sein');"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 421,
      "column": 20,
      "kind": "jsx_text",
      "text": "Betrag (CHF)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label>Betrag (CHF)</label>"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 427,
      "column": 27,
      "kind": "string_literal",
      "text": "z.B. 50",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"z.B. 50\""
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 484,
      "column": 45,
      "kind": "string_literal",
      "text": "Mandant nicht ausgewählt",
      "context": "string literal",
      "line_content": "    if (!selectedMandateId) throw new Error('Mandant nicht ausgewählt');"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 486,
      "column": 34,
      "kind": "string_literal",
      "text": "Gutschrift konnte nicht erstellt werden",
      "context": "string literal",
      "line_content": "    if (!result) throw new Error('Gutschrift konnte nicht erstellt werden');"
    },
    {
      "file": "src/pages/billing/BillingAdmin.tsx",
      "line": 650,
      "column": 27,
      "kind": "string_literal",
      "text": "1px solid var(--color-border, #333)",
      "context": "string literal",
      "line_content": "            borderBottom: '1px solid var(--color-border, #333)',"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 67,
      "column": 55,
      "kind": "jsx_text",
      "text": "Lade Statistiken...",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.loadingPlaceholder}>Lade Statistiken...</div>;"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 71,
      "column": 43,
      "kind": "jsx_text",
      "text": "Keine Statistiken verfügbar",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.noData}>Keine Statistiken verfügbar</div>;"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 85,
      "column": 13,
      "kind": "jsx_text",
      "text": "Kosten nach Anbieter",
      "context": "between tags, user-visible text node",
      "line_content": "        <h4>Kosten nach Anbieter</h4>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 87,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Daten</div>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 107,
      "column": 13,
      "kind": "jsx_text",
      "text": "Kosten nach Modell",
      "context": "between tags, user-visible text node",
      "line_content": "        <h4>Kosten nach Modell</h4>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 109,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Daten</div>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 129,
      "column": 13,
      "kind": "jsx_text",
      "text": "Kosten nach Feature",
      "context": "between tags, user-visible text node",
      "line_content": "        <h4>Kosten nach Feature</h4>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 131,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Daten",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Daten</div>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 180,
      "column": 24,
      "kind": "string_literal",
      "text": "Januar",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 1, label: 'Januar' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 181,
      "column": 24,
      "kind": "string_literal",
      "text": "Februar",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 2, label: 'Februar' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 182,
      "column": 24,
      "kind": "string_literal",
      "text": "März",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 3, label: 'März' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 183,
      "column": 24,
      "kind": "string_literal",
      "text": "April",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 4, label: 'April' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 184,
      "column": 24,
      "kind": "string_literal",
      "text": "Mai",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 5, label: 'Mai' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 185,
      "column": 24,
      "kind": "string_literal",
      "text": "Juni",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 6, label: 'Juni' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 186,
      "column": 24,
      "kind": "string_literal",
      "text": "Juli",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 7, label: 'Juli' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 187,
      "column": 24,
      "kind": "string_literal",
      "text": "August",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 8, label: 'August' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 188,
      "column": 24,
      "kind": "string_literal",
      "text": "September",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 9, label: 'September' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 189,
      "column": 25,
      "kind": "string_literal",
      "text": "Oktober",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 10, label: 'Oktober' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 190,
      "column": 25,
      "kind": "string_literal",
      "text": "November",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 11, label: 'November' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 191,
      "column": 25,
      "kind": "string_literal",
      "text": "Dezember",
      "context": "object property label: (e.g. table column)",
      "line_content": "    { value: 12, label: 'Dezember' },"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 198,
      "column": 40,
      "kind": "jsx_text",
      "text": "Übersicht über Guthaben und Nutzung",
      "context": "between tags, user-visible text node",
      "line_content": "        <p className={styles.subtitle}>Übersicht über Guthaben und Nutzung</p>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 207,
      "column": 54,
      "kind": "jsx_text",
      "text": "Lade Guthaben...",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.loadingPlaceholder}>Lade Guthaben...</div>"
    },
    {
      "file": "src/pages/billing/BillingDashboard.tsx",
      "line": 209,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Abrechnungskonten vorhanden",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Abrechnungskonten vorhanden</div>"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 5,
      "column": 10,
      "kind": "string_literal",
      "text": "Übersicht",
      "context": "string literal",
      "line_content": " * - Tab \"Übersicht\": KPI grid with cost, balance, storage metrics"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 90,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--color-border, #333)",
      "context": "string literal",
      "line_content": "      borderBottom: '1px solid var(--color-border, #333)',"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 133,
      "column": 24,
      "kind": "string_literal",
      "text": "{n} Transaktionen",
      "context": "string literal",
      "line_content": "          subtitle: tr('{n} Transaktionen', { n: String(viewStats.transactionCount) }),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 138,
      "column": 38,
      "kind": "string_literal",
      "text": "Top: {name}",
      "context": "string literal",
      "line_content": "          subtitle: topProvider ? tr('Top: {name}', { name: topProvider[0] }) : tr('Keine Nutzung'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 138,
      "column": 84,
      "kind": "string_literal",
      "text": "Keine Nutzung",
      "context": "string literal",
      "line_content": "          subtitle: topProvider ? tr('Top: {name}', { name: topProvider[0] }) : tr('Keine Nutzung'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 143,
      "column": 35,
      "kind": "string_literal",
      "text": "Top: {name}",
      "context": "string literal",
      "line_content": "          subtitle: topModel ? tr('Top: {name}', { name: topModel[0] }) : tr('Keine Nutzung'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 143,
      "column": 78,
      "kind": "string_literal",
      "text": "Keine Nutzung",
      "context": "string literal",
      "line_content": "          subtitle: topModel ? tr('Top: {name}', { name: topModel[0] }) : tr('Keine Nutzung'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 148,
      "column": 37,
      "kind": "string_literal",
      "text": "Top: {name}",
      "context": "string literal",
      "line_content": "          subtitle: topFeature ? tr('Top: {name}', { name: topFeature[0] }) : tr('Keine Nutzung'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 148,
      "column": 82,
      "kind": "string_literal",
      "text": "Keine Nutzung",
      "context": "string literal",
      "line_content": "          subtitle: topFeature ? tr('Top: {name}', { name: topFeature[0] }) : tr('Keine Nutzung'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 179,
      "column": 96,
      "kind": "string_literal",
      "text": "{n} Transaktionen",
      "context": "string literal",
      "line_content": "        { label: tr('Gesamtkosten'), value: _formatCurrency(viewStats.totalCost), subtitle: tr('{n} Transaktionen', { n: String(viewStats.transactionCount) }) },"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 180,
      "column": 84,
      "kind": "string_literal",
      "text": "pro Transaktion",
      "context": "string literal",
      "line_content": "        { label: tr('Durchschnitt'), value: _formatCurrency(avgCost), subtitle: tr('pro Transaktion') },"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 196,
      "column": 17,
      "kind": "string_literal",
      "text": "Kosten nach Anbieter",
      "context": "string literal",
      "line_content": "      title: tr('Kosten nach Anbieter'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 204,
      "column": 17,
      "kind": "string_literal",
      "text": "Kosten nach Modell",
      "context": "string literal",
      "line_content": "      title: tr('Kosten nach Modell'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 212,
      "column": 17,
      "kind": "string_literal",
      "text": "Kosten nach Feature",
      "context": "string literal",
      "line_content": "      title: tr('Kosten nach Feature'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 220,
      "column": 17,
      "kind": "string_literal",
      "text": "Kosten nach Mandant",
      "context": "string literal",
      "line_content": "      title: tr('Kosten nach Mandant'),"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 277,
      "column": 55,
      "kind": "string_literal",
      "text": "Zahlung erfolgreich. Guthaben wurde verbucht.",
      "context": "string literal",
      "line_content": "          setCheckoutMessage({ type: 'success', text: 'Zahlung erfolgreich. Guthaben wurde verbucht.' });"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 523,
      "column": 44,
      "kind": "jsx_text",
      "text": "Nutzung, Diagramme und Transaktionen",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.subtitle}>Nutzung, Diagramme und Transaktionen</p>"
    },
    {
      "file": "src/pages/billing/BillingDataView.tsx",
      "line": 586,
      "column": 23,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #333)",
      "context": "string literal",
      "line_content": "              border: '1px solid var(--border-color, #333)',"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 47,
      "column": 17,
      "kind": "jsx_text",
      "text": "Anzahl Benutzer",
      "context": "between tags, user-visible text node",
      "line_content": "            <th>Anzahl Benutzer</th>"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 48,
      "column": 17,
      "kind": "jsx_text",
      "text": "Warnschwelle (%)",
      "context": "between tags, user-visible text node",
      "line_content": "            <th>Warnschwelle (%)</th>"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 217,
      "column": 44,
      "kind": "jsx_text",
      "text": "Guthaben und Transaktionen pro Mandant",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.subtitle}>Guthaben und Transaktionen pro Mandant</p>"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 228,
      "column": 54,
      "kind": "jsx_text",
      "text": "Lade Daten...",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.loadingPlaceholder}>Lade Daten...</div>"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 230,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Mandanten mit Billing-Settings vorhanden",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Mandanten mit Billing-Settings vorhanden</div>"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 253,
      "column": 54,
      "kind": "jsx_text",
      "text": "Lade Transaktionen...",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.loadingPlaceholder}>Lade Transaktionen...</div>"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 255,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Transaktionen vorhanden",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Transaktionen vorhanden</div>"
    },
    {
      "file": "src/pages/billing/BillingMandateView.tsx",
      "line": 267,
      "column": 43,
      "kind": "string_literal",
      "text": "Mehr laden",
      "context": "string literal",
      "line_content": "                  {loading ? 'Laden...' : 'Mehr laden'}"
    },
    {
      "file": "src/pages/billing/BillingNav.tsx",
      "line": 27,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--color-border)",
      "context": "string literal",
      "line_content": "      borderBottom: '1px solid var(--color-border)',"
    },
    {
      "file": "src/pages/billing/BillingTransactions.tsx",
      "line": 97,
      "column": 40,
      "kind": "jsx_text",
      "text": "Übersicht aller Kontobewegungen",
      "context": "between tags, user-visible text node",
      "line_content": "        <p className={styles.subtitle}>Übersicht aller Kontobewegungen</p>"
    },
    {
      "file": "src/pages/billing/BillingTransactions.tsx",
      "line": 104,
      "column": 54,
      "kind": "jsx_text",
      "text": "Lade Transaktionen...",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.loadingPlaceholder}>Lade Transaktionen...</div>"
    },
    {
      "file": "src/pages/billing/BillingTransactions.tsx",
      "line": 106,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Transaktionen vorhanden",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Transaktionen vorhanden</div>"
    },
    {
      "file": "src/pages/billing/BillingTransactions.tsx",
      "line": 138,
      "column": 43,
      "kind": "string_literal",
      "text": "Mehr laden",
      "context": "string literal",
      "line_content": "                  {loading ? 'Laden...' : 'Mehr laden'}"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 92,
      "column": 30,
      "kind": "jsx_text",
      "text": "Alle Mandanten",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"\">Alle Mandanten</option>"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 107,
      "column": 30,
      "kind": "jsx_text",
      "text": "Alle Benutzer",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"\">Alle Benutzer</option>"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 313,
      "column": 40,
      "kind": "jsx_text",
      "text": "Guthaben und Transaktionen pro Benutzer",
      "context": "between tags, user-visible text node",
      "line_content": "        <p className={styles.subtitle}>Guthaben und Transaktionen pro Benutzer</p>"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 322,
      "column": 54,
      "kind": "jsx_text",
      "text": "Lade Daten...",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.loadingPlaceholder}>Lade Daten...</div>"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 324,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Benutzer-Konten vorhanden",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Benutzer-Konten vorhanden</div>"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 349,
      "column": 54,
      "kind": "jsx_text",
      "text": "Lade Transaktionen...",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.loadingPlaceholder}>Lade Transaktionen...</div>"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 351,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Transaktionen vorhanden",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Transaktionen vorhanden</div>"
    },
    {
      "file": "src/pages/billing/BillingUserView.tsx",
      "line": 367,
      "column": 43,
      "kind": "string_literal",
      "text": "Mehr laden",
      "context": "string literal",
      "line_content": "                  {loading ? 'Laden...' : 'Mehr laden'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 44,
      "column": 21,
      "kind": "string_literal",
      "text": "Zahlung ausstehend",
      "context": "object property label: (e.g. table column)",
      "line_content": "  PENDING: { label: 'Zahlung ausstehend', color: '#f59e0b' },"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 45,
      "column": 23,
      "kind": "string_literal",
      "text": "Geplant",
      "context": "object property label: (e.g. table column)",
      "line_content": "  SCHEDULED: { label: 'Geplant', color: '#8b5cf6' },"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 46,
      "column": 20,
      "kind": "string_literal",
      "text": "Aktiv",
      "context": "object property label: (e.g. table column)",
      "line_content": "  ACTIVE: { label: 'Aktiv', color: '#22c55e' },"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 47,
      "column": 22,
      "kind": "string_literal",
      "text": "Testphase",
      "context": "object property label: (e.g. table column)",
      "line_content": "  TRIALING: { label: 'Testphase', color: '#38bdf8' },"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 48,
      "column": 22,
      "kind": "string_literal",
      "text": "Zahlung ausstehend",
      "context": "object property label: (e.g. table column)",
      "line_content": "  PAST_DUE: { label: 'Zahlung ausstehend', color: '#f59e0b' },"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 49,
      "column": 21,
      "kind": "string_literal",
      "text": "Abgelaufen",
      "context": "object property label: (e.g. table column)",
      "line_content": "  EXPIRED: { label: 'Abgelaufen', color: '#6b7280' },"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 54,
      "column": 11,
      "kind": "string_literal",
      "text": "Jährlich",
      "context": "string literal",
      "line_content": "  YEARLY: 'Jährlich',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 78,
      "column": 27,
      "kind": "string_literal",
      "text": "2px solid var(--primary-color, #F25843)",
      "context": "string literal",
      "line_content": "      border: isCurrent ? '2px solid var(--primary-color, #F25843)' : '1px solid var(--color-border, var(--border-color, #333))',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 78,
      "column": 71,
      "kind": "string_literal",
      "text": "1px solid var(--color-border, var(--border-color, #333))",
      "context": "string literal",
      "line_content": "      border: isCurrent ? '2px solid var(--primary-color, #F25843)' : '1px solid var(--color-border, var(--border-color, #333))',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 103,
      "column": 79,
      "kind": "jsx_text",
      "text": "/ {_periodLabel[plan.billingPeriod] || plan.billingPeriod}",
      "context": "between tags, user-visible text node",
      "line_content": "          <div>User: <strong>{_formatCurrency(plan.pricePerUserCHF)}</strong> / {_periodLabel[plan.billingPeriod] || plan.billingPeriod}</div>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 104,
      "column": 93,
      "kind": "jsx_text",
      "text": "/ {_periodLabel[plan.billingPeriod] || plan.billingPeriod}",
      "context": "between tags, user-visible text node",
      "line_content": "          <div>Instanz: <strong>{_formatCurrency(plan.pricePerFeatureInstanceCHF)}</strong> / {_periodLabel[plan.billingPeriod] || plan.billingPeriod}</div>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 124,
      "column": 32,
      "kind": "jsx_text",
      "text": "· max. {plan.maxUsers} User",
      "context": "between tags, user-visible text node",
      "line_content": "          {plan.maxUsers && <> · max. {plan.maxUsers} User</>}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 125,
      "column": 43,
      "kind": "jsx_text",
      "text": "· max. {plan.maxFeatureInstances} Instanzen",
      "context": "between tags, user-visible text node",
      "line_content": "          {plan.maxFeatureInstances && <> · max. {plan.maxFeatureInstances} Instanzen</>}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 129,
      "column": 20,
      "kind": "jsx_text",
      "text": "· Speicher inkl. {formatBinaryDataSizeFromMebibytes(plan.maxDataVolumeMB)}",
      "context": "between tags, user-visible text node",
      "line_content": "                <> · Speicher inkl. {formatBinaryDataSizeFromMebibytes(plan.maxDataVolumeMB)}</>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 131,
      "column": 50,
      "kind": "jsx_text",
      "text": "· AI-Budget { _formatCurrency(plan.budgetAiCHF ?? 0)}",
      "context": "between tags, user-visible text node",
      "line_content": "              {(plan.budgetAiCHF ?? 0) > 0 && <> · AI-Budget { _formatCurrency(plan.budgetAiCHF ?? 0)}</>}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 150,
      "column": 50,
      "kind": "string_literal",
      "text": "Kostenpflichtig abonnieren",
      "context": "string literal",
      "line_content": "            : (!isFreePlan && !plan.trialDays) ? 'Kostenpflichtig abonnieren' : 'Auswählen'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 150,
      "column": 81,
      "kind": "string_literal",
      "text": "Auswählen",
      "context": "string literal",
      "line_content": "            : (!isFreePlan && !plan.trialDays) ? 'Kostenpflichtig abonnieren' : 'Auswählen'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 180,
      "column": 15,
      "kind": "string_literal",
      "text": "1px solid var(--color-border, var(--border-color, #333))",
      "context": "string literal",
      "line_content": "      border: '1px solid var(--color-border, var(--border-color, #333))',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 198,
      "column": 16,
      "kind": "jsx_text",
      "text": "Gekündigt",
      "context": "between tags, user-visible text node",
      "line_content": "            }}>Gekündigt</span>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 215,
      "column": 15,
      "kind": "string_literal",
      "text": "Zahlung erfolgreich. Abonnement wird aktiviert — bitte warten...",
      "context": "string literal",
      "line_content": "            ? 'Zahlung erfolgreich. Abonnement wird aktiviert — bitte warten...'"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 216,
      "column": 15,
      "kind": "string_literal",
      "text": "Die Zahlung wurde noch nicht abgeschlossen. Sie können den Checkout abbrechen oder erneut starten.",
      "context": "string literal",
      "line_content": "            : 'Die Zahlung wurde noch nicht abgeschlossen. Sie können den Checkout abbrechen oder erneut starten.'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 235,
      "column": 17,
      "kind": "jsx_text",
      "text": "Gestartet: {_formatDate(sub.startedAt)}",
      "context": "between tags, user-visible text node",
      "line_content": "          <span>Gestartet: {_formatDate(sub.startedAt)}</span>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 236,
      "column": 26,
      "kind": "jsx_text",
      "text": "Periode: {_periodLabel[plan.billingPeriod] || '—'}",
      "context": "between tags, user-visible text node",
      "line_content": "          {plan && <span>Periode: {_periodLabel[plan.billingPeriod] || '—'}</span>}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 237,
      "column": 42,
      "kind": "jsx_text",
      "text": "Periodenende: {_formatDate(sub.currentPeriodEnd)}",
      "context": "between tags, user-visible text node",
      "line_content": "          {sub.currentPeriodEnd && <span>Periodenende: {_formatDate(sub.currentPeriodEnd)}</span>}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 238,
      "column": 37,
      "kind": "jsx_text",
      "text": "Trial endet: {_formatDate(sub.trialEndsAt)}",
      "context": "between tags, user-visible text node",
      "line_content": "          {sub.trialEndsAt && <span>Trial endet: {_formatDate(sub.trialEndsAt)}</span>}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 240,
      "column": 48,
      "kind": "jsx_text",
      "text": "Läuft aus am: {_formatDate(sub.currentPeriodEnd)}",
      "context": "between tags, user-visible text node",
      "line_content": "            <span style={{ color: '#ef4444' }}>Läuft aus am: {_formatDate(sub.currentPeriodEnd)}</span>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 244,
      "column": 21,
      "kind": "jsx_text",
      "text": "AI-Budget (inkl.): {_formatCurrency(plan.budgetAiCHF ?? 0)} / Periode",
      "context": "between tags, user-visible text node",
      "line_content": "              <span>AI-Budget (inkl.): {_formatCurrency(plan.budgetAiCHF ?? 0)} / Periode</span>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 270,
      "column": 29,
      "kind": "string_literal",
      "text": "Wird reaktiviert...",
      "context": "string literal",
      "line_content": "            {reactivating ? 'Wird reaktiviert...' : 'Reaktivieren'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 285,
      "column": 27,
      "kind": "string_literal",
      "text": "Wird gekündigt...",
      "context": "string literal",
      "line_content": "            {cancelling ? 'Wird gekündigt...' : 'Kündigen'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 285,
      "column": 49,
      "kind": "string_literal",
      "text": "Kündigen",
      "context": "string literal",
      "line_content": "            {cancelling ? 'Wird gekündigt...' : 'Kündigen'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 300,
      "column": 27,
      "kind": "string_literal",
      "text": "Wird abgebrochen...",
      "context": "string literal",
      "line_content": "            {cancelling ? 'Wird abgebrochen...' : 'Abbrechen'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 343,
      "column": 51,
      "kind": "string_literal",
      "text": "Zahlung erfolgreich — Abonnement wird aktiviert...",
      "context": "string literal",
      "line_content": "      setCheckoutMessage({ type: 'success', text: 'Zahlung erfolgreich — Abonnement wird aktiviert...' });"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 357,
      "column": 59,
      "kind": "string_literal",
      "text": "Abonnement wurde aktiviert.",
      "context": "string literal",
      "line_content": "              setCheckoutMessage({ type: 'success', text: 'Abonnement wurde aktiviert.' });"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 370,
      "column": 48,
      "kind": "string_literal",
      "text": "Checkout abgebrochen. Ihr bestehendes Abonnement bleibt aktiv.",
      "context": "string literal",
      "line_content": "      setCheckoutMessage({ type: 'info', text: 'Checkout abgebrochen. Ihr bestehendes Abonnement bleibt aktiv.' });"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 381,
      "column": 51,
      "kind": "string_literal",
      "text": "Abonnement wurde aktiviert.",
      "context": "string literal",
      "line_content": "      setCheckoutMessage({ type: 'success', text: 'Abonnement wurde aktiviert.' });"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 391,
      "column": 68,
      "kind": "string_literal",
      "text": "Fehler beim Aktivieren",
      "context": "string literal",
      "line_content": "      setActionError(err?.response?.data?.detail || err.message || 'Fehler beim Aktivieren');"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 402,
      "column": 11,
      "kind": "string_literal",
      "text": "Diesen Vorgang abbrechen?",
      "context": "string literal",
      "line_content": "        ? 'Diesen Vorgang abbrechen?'"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 403,
      "column": 11,
      "kind": "string_literal",
      "text": "Abonnement kündigen? Es bleibt bis zum Periodenende aktiv.",
      "context": "string literal",
      "line_content": "        : 'Abonnement kündigen? Es bleibt bis zum Periodenende aktiv.',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 405,
      "column": 39,
      "kind": "string_literal",
      "text": "Vorgang abbrechen",
      "context": "string literal",
      "line_content": "        title: isPendingOrScheduled ? 'Vorgang abbrechen' : 'Abonnement kündigen',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 405,
      "column": 61,
      "kind": "string_literal",
      "text": "Abonnement kündigen",
      "context": "string literal",
      "line_content": "        title: isPendingOrScheduled ? 'Vorgang abbrechen' : 'Abonnement kündigen',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 406,
      "column": 46,
      "kind": "string_literal",
      "text": "Ja, abbrechen",
      "context": "string literal",
      "line_content": "        confirmLabel: isPendingOrScheduled ? 'Ja, abbrechen' : 'Kündigen',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 406,
      "column": 64,
      "kind": "string_literal",
      "text": "Kündigen",
      "context": "string literal",
      "line_content": "        confirmLabel: isPendingOrScheduled ? 'Ja, abbrechen' : 'Kündigen',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 407,
      "column": 45,
      "kind": "string_literal",
      "text": "Nein, zurück",
      "context": "string literal",
      "line_content": "        cancelLabel: isPendingOrScheduled ? 'Nein, zurück' : 'Abbrechen',"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 430,
      "column": 68,
      "kind": "string_literal",
      "text": "Fehler beim Reaktivieren",
      "context": "string literal",
      "line_content": "      setActionError(err?.response?.data?.detail || err.message || 'Fehler beim Reaktivieren');"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 437,
      "column": 55,
      "kind": "jsx_text",
      "text": "Lade Abonnement-Daten...",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.loadingPlaceholder}>Lade Abonnement-Daten...</div>;"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 464,
      "column": 45,
      "kind": "jsx_text",
      "text": "Aktuelles Abonnement",
      "context": "between tags, user-visible text node",
      "line_content": "        <h2 className={styles.sectionTitle}>Aktuelles Abonnement</h2>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 470,
      "column": 29,
      "kind": "string_literal",
      "text": "Zahlung wird verarbeitet",
      "context": "string literal",
      "line_content": "              ? (justPaid ? 'Zahlung wird verarbeitet' : 'Checkout in Bearbeitung')"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 470,
      "column": 58,
      "kind": "string_literal",
      "text": "Checkout in Bearbeitung",
      "context": "string literal",
      "line_content": "              ? (justPaid ? 'Zahlung wird verarbeitet' : 'Checkout in Bearbeitung')"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 471,
      "column": 17,
      "kind": "string_literal",
      "text": "Operatives Abonnement",
      "context": "string literal",
      "line_content": "              : 'Operatives Abonnement'}"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 488,
      "column": 47,
      "kind": "jsx_text",
      "text": "Geplanter Nachfolger",
      "context": "between tags, user-visible text node",
      "line_content": "          <h2 className={styles.sectionTitle}>Geplanter Nachfolger</h2>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 492,
      "column": 19,
      "kind": "string_literal",
      "text": "Startet nach Ablauf des aktuellen Abonnements",
      "context": "string literal",
      "line_content": "            label=\"Startet nach Ablauf des aktuellen Abonnements\""
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 502,
      "column": 45,
      "kind": "jsx_text",
      "text": "Verfügbare Pläne",
      "context": "between tags, user-visible text node",
      "line_content": "        <h2 className={styles.sectionTitle}>Verfügbare Pläne</h2>"
    },
    {
      "file": "src/pages/billing/SubscriptionTab.tsx",
      "line": 504,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Pläne verfügbar",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.noData}>Keine Pläne verfügbar</div>"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 83,
      "column": 30,
      "kind": "string_literal",
      "text": "Möchten Sie diese Konversation wirklich löschen?",
      "context": "string literal",
      "line_content": "    const ok = await confirm('Möchten Sie diese Konversation wirklich löschen?', {"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 84,
      "column": 14,
      "kind": "string_literal",
      "text": "Konversation löschen",
      "context": "string literal",
      "line_content": "      title: 'Konversation löschen',"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 85,
      "column": 21,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "      confirmLabel: 'Löschen',"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 108,
      "column": 30,
      "kind": "string_literal",
      "text": "Gerade eben",
      "context": "string literal",
      "line_content": "    if (diffMins < 1) return 'Gerade eben';"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 125,
      "column": 12,
      "kind": "string_literal",
      "text": "Neue Konversation",
      "context": "string literal",
      "line_content": "    return 'Neue Konversation';"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 137,
      "column": 19,
      "kind": "string_literal",
      "text": "Neue Konversation",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            title=\"Neue Konversation\""
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 146,
      "column": 19,
      "kind": "jsx_text",
      "text": "Lade Konversationen...",
      "context": "between tags, user-visible text node",
      "line_content": "            <span>Lade Konversationen...</span>"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 158,
      "column": 16,
      "kind": "jsx_text",
      "text": "Noch keine Konversationen vorhanden.",
      "context": "between tags, user-visible text node",
      "line_content": "            <p>Noch keine Konversationen vorhanden.</p>"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 159,
      "column": 45,
      "kind": "jsx_text",
      "text": "Starte eine neue Konversation, um zu beginnen.",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.emptyHint}>Starte eine neue Konversation, um zu beginnen.</p>"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 179,
      "column": 25,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Löschen\""
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 200,
      "column": 21,
      "kind": "jsx_text",
      "text": "Lade Nachrichten...",
      "context": "between tags, user-visible text node",
      "line_content": "              <span>Lade Nachrichten...</span>"
    },
    {
      "file": "src/pages/views/chatbot/ChatbotConversationsView.tsx",
      "line": 249,
      "column": 25,
      "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/CommcoachDashboardView.tsx",
      "line": 25,
      "column": 44,
      "kind": "jsx_text",
      "text": "Dashboard wird geladen...",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.loading}>Dashboard wird geladen...</div>;"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 33,
      "column": 42,
      "kind": "jsx_text",
      "text": "Keine Daten verfügbar.",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.empty}>Keine Daten verfügbar.</div>;"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 42,
      "column": 44,
      "kind": "jsx_text",
      "text": "Tage Streak",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.kpiLabel}>Tage Streak</div>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 43,
      "column": 42,
      "kind": "jsx_text",
      "text": "Rekord: {dashboard.longestStreak}",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.kpiSub}>Rekord: {dashboard.longestStreak}</div>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 68,
      "column": 45,
      "kind": "jsx_text",
      "text": "Aktive Coaching-Themen",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.sectionTitle}>Aktive Coaching-Themen</h3>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 71,
      "column": 16,
      "kind": "jsx_text",
      "text": "Noch keine Coaching-Themen erstellt.",
      "context": "between tags, user-visible text node",
      "line_content": "            <p>Noch keine Coaching-Themen erstellt.</p>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 72,
      "column": 16,
      "kind": "jsx_text",
      "text": "Wechsle zum Coaching-Tab, um dein erstes Thema anzulegen.",
      "context": "between tags, user-visible text node",
      "line_content": "            <p>Wechsle zum Coaching-Tab, um dein erstes Thema anzulegen.</p>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 89,
      "column": 54,
      "kind": "jsx_text",
      "text": "Ziele: {ctx.goalProgress}%",
      "context": "between tags, user-visible text node",
      "line_content": "                  {ctx.goalProgress != null && <span>Ziele: {ctx.goalProgress}%</span>}"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 125,
      "column": 45,
      "kind": "jsx_text",
      "text": "Tipp des Tages",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.sectionTitle}>Tipp des Tages</h3>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 137,
      "column": 17,
      "kind": "string_literal",
      "text": "Führung",
      "context": "string literal",
      "line_content": "    leadership: 'Führung',"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 140,
      "column": 19,
      "kind": "string_literal",
      "text": "Präsentation",
      "context": "string literal",
      "line_content": "    presentation: 'Präsentation',"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDashboardView.tsx",
      "line": 143,
      "column": 23,
      "kind": "string_literal",
      "text": "Change Mgmt",
      "context": "string literal",
      "line_content": "    changeManagement: 'Change Mgmt',"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 262,
      "column": 35,
      "kind": "string_literal",
      "text": "Seitenleiste einblenden",
      "context": "string literal",
      "line_content": "            title={udbCollapsed ? 'Seitenleiste einblenden' : 'Seitenleiste ausblenden'}"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 262,
      "column": 63,
      "kind": "string_literal",
      "text": "Seitenleiste ausblenden",
      "context": "string literal",
      "line_content": "            title={udbCollapsed ? 'Seitenleiste einblenden' : 'Seitenleiste ausblenden'}"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 294,
      "column": 17,
      "kind": "string_literal",
      "text": "Neues Thema",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          title=\"Neues Thema\""
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 305,
      "column": 25,
      "kind": "string_literal",
      "text": "Thema / Titel...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Thema / Titel...\""
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 313,
      "column": 25,
      "kind": "string_literal",
      "text": "Beschreibung (optional)",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Beschreibung (optional)\""
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 319,
      "column": 40,
      "kind": "jsx_text",
      "text": "Führung",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"leadership\">Führung</option>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 322,
      "column": 42,
      "kind": "jsx_text",
      "text": "Präsentation",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"presentation\">Präsentation</option>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 325,
      "column": 46,
      "kind": "jsx_text",
      "text": "Change Management",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"changeManagement\">Change Management</option>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 329,
      "column": 53,
      "kind": "string_literal",
      "text": "Wird erstellt...",
      "context": "string literal",
      "line_content": "              {coach.actionLoading === 'creating' ? 'Wird erstellt...' : 'Erstellen'}"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 339,
      "column": 15,
      "kind": "jsx_text",
      "text": "Willkommen beim Kommunikations-Coach",
      "context": "between tags, user-visible text node",
      "line_content": "          <h3>Willkommen beim Kommunikations-Coach</h3>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 340,
      "column": 14,
      "kind": "jsx_text",
      "text": "Erstelle ein Thema, um zu beginnen.",
      "context": "between tags, user-visible text node",
      "line_content": "          <p>Erstelle ein Thema, um zu beginnen.</p>"
    },
    {
      "file": "src/pages/views/commcoach/CommcoachDossierView.tsx",
      "line": 341,
      "column": 64,
      "kind": "jsx_text",
      "text": "setShowNewContext(true)}>Neues Thema erstellen",
      "context": "between tags, user-visible text node",
      "line_content": "          <button className={styles.btnPrimary} onClick={() => setShowNewContext(true)}>Neues Thema erstellen</button>"
    },
    {
      "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": "                <p>Starte eine neue Coaching-Session zu diesem Thema.</p>"
    },
    {
      "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": "                    <label className={styles.personaLabel}>Gesprächspartner wählen:</label>"
    },
    {
      "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": "                  <span className={styles.sessionLabel}>Session aktiv</span>"
    },
    {
      "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": "                            <div className={styles.typing}>{coach.streamingStatus || 'Coach denkt nach'}<span className={styles.typingDots}>...</span></div>"
    },
    {
      "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": "                            <div style={{ padding: '6px 12px', fontSize: 11, color: '#999', fontWeight: 600, borderBottom: '1px solid #f0f0f0' }}>Dateien anhängen</div>"
    },
    {
      "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": "                                <div style={{ padding: '6px 12px', fontSize: 11, color: '#999', fontWeight: 600, borderBottom: '1px solid #f0f0f0' }}>Persönliche Quellen</div>"
    },
    {
      "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": "              <div className={styles.emptyTab}>Noch keine Aufgaben. Der Coach schlägt während Sessions Aufgaben vor.</div>"
    },
    {
      "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": "              <div className={styles.emptyTab}>Noch keine abgeschlossenen Sessions.</div>"
    },
    {
      "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 && <span className={styles.sessionScore}>Score: {Math.round(s.competenceScore)}</span>}"
    },
    {
      "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 && <span> | Persona</span>}"
    },
    {
      "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": "              <div className={styles.emptyTab}>Noch keine Bewertungen. Schliesse eine Session ab, um Scores zu erhalten.</div>"
    },
    {
      "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 <div className={styles.loading}>Einstellungen werden geladen...</div>;"
    },
    {
      "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": "        <h3 className={styles.sectionTitle}>Stimme & Sprache</h3>"
    },
    {
      "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": "            <div className={styles.statItem}><span className={styles.statValue}>{profile.totalSessions}</span><span className={styles.statLabel}>Sessions gesamt</span></div>"
    },
    {
      "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": "            <div className={styles.statItem}><span className={styles.statValue}>{profile.totalMinutes}</span><span className={styles.statLabel}>Minuten gesamt</span></div>"
    },
    {
      "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": "            <div className={styles.statItem}><span className={styles.statValue}>{profile.streakDays}</span><span className={styles.statLabel}>Aktueller Streak</span></div>"
    },
    {
      "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": "            <div className={styles.statItem}><span className={styles.statValue}>{profile.longestStreak}</span><span className={styles.statLabel}>Laengster Streak</span></div>"
    },
    {
      "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": "        <h2>Graphical Editor</h2>"
    },
    {
      "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": "        <p>Keine Feature-Instanz gefunden.</p>"
    },
    {
      "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": "        <p>Keine Feature-Instanz gefunden.</p>"
    },
    {
      "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": "              <h4 style={{ margin: '0 0 8px', fontSize: '0.9rem' }}>Scope ändern</h4>"
    },
    {
      "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": "        <p>Keine Feature-Instanz gefunden.</p>"
    },
    {
      "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": "          <h1 className={styles.pageTitle}>Gespeicherte Workflows</h1>"
    },
    {
      "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": "        <p>Keine Feature-Instanz gefunden.</p>"
    },
    {
      "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": "        <p>Lade Tasks…</p>"
    },
    {
      "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": "          <p className={styles.empty}>Keine offenen Tasks</p>"
    },
    {
      "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": "          <span>Erledigte Tasks</span>"
    },
    {
      "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": "              <p className={styles.empty}>Keine erledigten Tasks</p>"
    },
    {
      "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": "      <aside className={styles.startSidebar} aria-label=\"Workflows starten\">"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 292,
      "column": 50,
      "kind": "jsx_text",
      "text": "Workflow starten",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.startSidebarTitle}>Workflow starten</h3>"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 315,
      "column": 27,
      "kind": "string_literal",
      "text": "Workflow ausführen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                    title=\"Workflow ausführen\""
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 387,
      "column": 37,
      "kind": "jsx_text",
      "text": "Kein Output (z.B. Workflow ohne file.create)",
      "context": "between tags, user-visible text node",
      "line_content": "        <p className={styles.empty}>Kein Output (z.B. Workflow ohne file.create)</p>"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 444,
      "column": 18,
      "kind": "string_literal",
      "text": "Aufgaben konnten nicht geladen werden.",
      "context": "string literal",
      "line_content": "          setErr('Aufgaben konnten nicht geladen werden.');"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 482,
      "column": 28,
      "kind": "jsx_text",
      "text": "— Aufgabe wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "          <option value=\"\">— Aufgabe wählen —</option>"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 596,
      "column": 38,
      "kind": "jsx_text",
      "text": "— Status wählen —",
      "context": "between tags, user-visible text node",
      "line_content": "                    <option value=\"\">— Status wählen —</option>"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 630,
      "column": 21,
      "kind": "string_literal",
      "text": "Formular ausfüllen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              title=\"Formular ausfüllen\""
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 644,
      "column": 33,
      "kind": "string_literal",
      "text": "Wird gesendet…",
      "context": "string literal",
      "line_content": "                  {submitting ? 'Wird gesendet…' : 'Absenden'}"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 736,
      "column": 48,
      "kind": "string_literal",
      "text": "Bestätigen?",
      "context": "string literal",
      "line_content": "            <p>{(config.question as string) ?? 'Bestätigen?'}</p>"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 743,
      "column": 82,
      "kind": "string_literal",
      "text": "Bestätigen",
      "context": "string literal",
      "line_content": "                {typeof config.confirmLabel === 'string' ? config.confirmLabel : 'Bestätigen'}"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 755,
      "column": 12,
      "kind": "string_literal",
      "text": "input.upload",
      "context": "string literal",
      "line_content": "      case 'input.upload': {"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 765,
      "column": 28,
      "kind": "string_literal",
      "text": "Nur eine Datei erlaubt.",
      "context": "string literal",
      "line_content": "            setUploadError('Nur eine Datei erlaubt.');"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 808,
      "column": 154,
      "kind": "string_literal",
      "text": "Upload fehlgeschlagen",
      "context": "string literal",
      "line_content": "              const msg = (err as { response?: { data?: { detail?: string } }; message?: string })?.response?.data?.detail ?? (err as Error)?.message ?? 'Upload fehlgeschlagen';"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 822,
      "column": 28,
      "kind": "string_literal",
      "text": "Bitte mindestens eine Datei hochladen.",
      "context": "string literal",
      "line_content": "            setUploadError('Bitte mindestens eine Datei hochladen.');"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 851,
      "column": 41,
      "kind": "string_literal",
      "text": "Wird hochgeladen…",
      "context": "string literal",
      "line_content": "              <FaUpload /> {uploading ? 'Wird hochgeladen…' : 'Datei(en) auswählen'}"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 851,
      "column": 63,
      "kind": "string_literal",
      "text": "Datei(en) auswählen",
      "context": "string literal",
      "line_content": "              <FaUpload /> {uploading ? 'Wird hochgeladen…' : 'Datei(en) auswählen'}"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 867,
      "column": 29,
      "kind": "string_literal",
      "text": "Wird gesendet…",
      "context": "string literal",
      "line_content": "              {submitting ? 'Wird gesendet…' : 'Absenden'}"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 875,
      "column": 16,
      "kind": "jsx_text",
      "text": "Review – Content anzeigen + Feedback",
      "context": "between tags, user-visible text node",
      "line_content": "            <p>Review – Content anzeigen + Feedback</p>"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 877,
      "column": 27,
      "kind": "string_literal",
      "text": "Feedback...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Feedback...\""
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 893,
      "column": 16,
      "kind": "jsx_text",
      "text": "Unbekannter Task-Typ: {nodeType}",
      "context": "between tags, user-visible text node",
      "line_content": "            <p>Unbekannter Task-Typ: {nodeType}</p>"
    },
    {
      "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx",
      "line": 922,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fällig",
      "context": "between tags, user-visible text node",
      "line_content": "          <span className={styles.metaLabel}>Fällig</span>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 75,
      "column": 9,
      "kind": "string_literal",
      "text": "Error loading configuration",
      "context": "string literal",
      "line_content": "        'Error loading configuration';"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 77,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', message);"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 94,
      "column": 25,
      "kind": "string_literal",
      "text": "Missing mandate or instance context",
      "context": "string literal",
      "line_content": "        throw new Error('Missing mandate or instance context');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 105,
      "column": 28,
      "kind": "string_literal",
      "text": "Configuration saved successfully.",
      "context": "string literal",
      "line_content": "      showSuccess('Saved', 'Configuration saved successfully.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 112,
      "column": 9,
      "kind": "string_literal",
      "text": "Failed to save configuration",
      "context": "string literal",
      "line_content": "        'Failed to save configuration';"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 114,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', message);"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 123,
      "column": 44,
      "kind": "jsx_text",
      "text": "Loading configuration...",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.loading}>Loading configuration...</div>;"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 128,
      "column": 43,
      "kind": "jsx_text",
      "text": "Neutralization Configuration",
      "context": "between tags, user-visible text node",
      "line_content": "      <h3 className={styles.sectionTitle}>Neutralization Configuration</h3>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 137,
      "column": 69,
      "kind": "string_literal",
      "text": "Dismiss",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            <button type=\"button\" onClick={dismissError} aria-label=\"Dismiss\">"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 144,
      "column": 43,
      "kind": "jsx_text",
      "text": "Names to Parse (one per line):",
      "context": "between tags, user-visible text node",
      "line_content": "          <label htmlFor=\"names-to-parse\">Names to Parse (one per line):</label>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 150,
      "column": 25,
      "kind": "string_literal",
      "text": "Enter names to parse, one per line...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Enter names to parse, one per line...\""
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 162,
      "column": 37,
      "kind": "string_literal",
      "text": "Save Configuration",
      "context": "string literal",
      "line_content": "            {saving ? 'Saving...' : 'Save Configuration'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 217,
      "column": 60,
      "kind": "string_literal",
      "text": "Failed to load SharePoint sites",
      "context": "string literal",
      "line_content": "      setBrowseError(typeof detail === 'string' ? detail : 'Failed to load SharePoint sites');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 236,
      "column": 60,
      "kind": "string_literal",
      "text": "Failed to load folders",
      "context": "string literal",
      "line_content": "      setBrowseError(typeof detail === 'string' ? detail : 'Failed to load folders');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 321,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', 'Please enter text to neutralize.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 321,
      "column": 26,
      "kind": "string_literal",
      "text": "Please enter text to neutralize.",
      "context": "string literal",
      "line_content": "      showError('Error', 'Please enter text to neutralize.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 329,
      "column": 27,
      "kind": "string_literal",
      "text": "Text neutralized successfully.",
      "context": "string literal",
      "line_content": "      showSuccess('Done', 'Text neutralized successfully.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 335,
      "column": 9,
      "kind": "string_literal",
      "text": "Failed to neutralize text",
      "context": "string literal",
      "line_content": "        'Failed to neutralize text';"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 336,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', message);"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 360,
      "column": 29,
      "kind": "string_literal",
      "text": "File neutralized. Download below or find it in your Files.",
      "context": "string literal",
      "line_content": "        showSuccess('Done', 'File neutralized. Download below or find it in your Files.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 364,
      "column": 58,
      "kind": "string_literal",
      "text": "File neutralized. Download or find in Files.",
      "context": "string literal",
      "line_content": "        showSuccess('Done', result.neutralized_file_id ? 'File neutralized. Download or find in Files.' : 'File neutralized.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 364,
      "column": 107,
      "kind": "string_literal",
      "text": "File neutralized.",
      "context": "string literal",
      "line_content": "        showSuccess('Done', result.neutralized_file_id ? 'File neutralized. Download or find in Files.' : 'File neutralized.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 366,
      "column": 77,
      "kind": "string_literal",
      "text": "No result returned",
      "context": "string literal",
      "line_content": "        const err = (result.processed_info as { error?: string })?.error || 'No result returned';"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 368,
      "column": 19,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "        showError('Error', err);"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 378,
      "column": 9,
      "kind": "string_literal",
      "text": "Failed to neutralize file",
      "context": "string literal",
      "line_content": "        'Failed to neutralize file';"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 379,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', message);"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 392,
      "column": 19,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "        showError('Error', 'Failed to download file');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 392,
      "column": 28,
      "kind": "string_literal",
      "text": "Failed to download file",
      "context": "string literal",
      "line_content": "        showError('Error', 'Failed to download file');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 409,
      "column": 19,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "        showError('Error', 'Failed to download file');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 409,
      "column": 28,
      "kind": "string_literal",
      "text": "Failed to download file",
      "context": "string literal",
      "line_content": "        showError('Error', 'Failed to download file');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 423,
      "column": 15,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "    showError('Error', 'No file data available to download. The neutralized file may not have been generated.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 423,
      "column": 24,
      "kind": "string_literal",
      "text": "No file data available to download. The neutralized file may not have been generated.",
      "context": "string literal",
      "line_content": "    showError('Error', 'No file data available to download. The neutralized file may not have been generated.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 428,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', 'No neutralized text to resolve.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 428,
      "column": 26,
      "kind": "string_literal",
      "text": "No neutralized text to resolve.",
      "context": "string literal",
      "line_content": "      showError('Error', 'No neutralized text to resolve.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 435,
      "column": 27,
      "kind": "string_literal",
      "text": "Text resolved successfully.",
      "context": "string literal",
      "line_content": "      showSuccess('Done', 'Text resolved successfully.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 441,
      "column": 9,
      "kind": "string_literal",
      "text": "Failed to resolve text",
      "context": "string literal",
      "line_content": "        'Failed to resolve text';"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 442,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', message);"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 455,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', 'Both SharePoint source and target paths are required.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 455,
      "column": 26,
      "kind": "string_literal",
      "text": "Both SharePoint source and target paths are required.",
      "context": "string literal",
      "line_content": "      showError('Error', 'Both SharePoint source and target paths are required.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 462,
      "column": 47,
      "kind": "string_literal",
      "text": "SharePoint files processed successfully.",
      "context": "string literal",
      "line_content": "        showSuccess('Done', result.message || 'SharePoint files processed successfully.');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 464,
      "column": 19,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "        showError('Error', result.message || 'Processing failed');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 464,
      "column": 46,
      "kind": "string_literal",
      "text": "Processing failed",
      "context": "string literal",
      "line_content": "        showError('Error', result.message || 'Processing failed');"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 471,
      "column": 9,
      "kind": "string_literal",
      "text": "Failed to process SharePoint files",
      "context": "string literal",
      "line_content": "        'Failed to process SharePoint files';"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 472,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', message);"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 481,
      "column": 43,
      "kind": "jsx_text",
      "text": "Manual Text &amp; File Neutralization",
      "context": "between tags, user-visible text node",
      "line_content": "      <h3 className={styles.sectionTitle}>Manual Text &amp; File Neutralization</h3>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 488,
      "column": 18,
      "kind": "jsx_text",
      "text": "1. Upload file to neutralize:",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>1. Upload file to neutralize:</label>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 503,
      "column": 49,
      "kind": "string_literal",
      "text": "Upload & Neutralize File",
      "context": "string literal",
      "line_content": "              {neutralizing ? 'Processing...' : 'Upload & Neutralize File'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 511,
      "column": 50,
      "kind": "string_literal",
      "text": "Neutralized File",
      "context": "string literal",
      "line_content": "                Download {fileResult.fileName || 'Neutralized File'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 523,
      "column": 39,
      "kind": "jsx_text",
      "text": "2. Or paste text:",
      "context": "between tags, user-visible text node",
      "line_content": "          <label htmlFor=\"input-text\">2. Or paste text:</label>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 529,
      "column": 25,
      "kind": "string_literal",
      "text": "Enter text to neutralize...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Enter text to neutralize...\""
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 540,
      "column": 49,
      "kind": "string_literal",
      "text": "Neutralize Text",
      "context": "string literal",
      "line_content": "            {neutralizing ? 'Neutralizing...' : 'Neutralize Text'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 548,
      "column": 43,
      "kind": "string_literal",
      "text": "Resolve Text",
      "context": "string literal",
      "line_content": "            {resolving ? 'Resolving...' : 'Resolve Text'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 553,
      "column": 18,
      "kind": "jsx_text",
      "text": "3. Or neutralize SharePoint files:",
      "context": "between tags, user-visible text node",
      "line_content": "          <label>3. Or neutralize SharePoint files:</label>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 563,
      "column": 31,
      "kind": "string_literal",
      "text": "SharePoint source path...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  placeholder=\"SharePoint source path...\""
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 570,
      "column": 46,
      "kind": "string_literal",
      "text": "Browse SharePoint",
      "context": "string literal",
      "line_content": "                  title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 570,
      "column": 68,
      "kind": "string_literal",
      "text": "Add a Microsoft connection first (Basisdaten → Connections)",
      "context": "string literal",
      "line_content": "                  title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 584,
      "column": 31,
      "kind": "string_literal",
      "text": "SharePoint target path...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  placeholder=\"SharePoint target path...\""
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 591,
      "column": 46,
      "kind": "string_literal",
      "text": "Browse SharePoint",
      "context": "string literal",
      "line_content": "                  title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 591,
      "column": 68,
      "kind": "string_literal",
      "text": "Add a Microsoft connection first (Basisdaten → Connections)",
      "context": "string literal",
      "line_content": "                  title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 606,
      "column": 21,
      "kind": "string_literal",
      "text": "Enter source and target SharePoint paths to enable",
      "context": "string literal",
      "line_content": "                  ? 'Enter source and target SharePoint paths to enable'"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 610,
      "column": 57,
      "kind": "string_literal",
      "text": "Neutralize SharePoint Files",
      "context": "string literal",
      "line_content": "              {processingSharepoint ? 'Processing...' : 'Neutralize SharePoint Files'}"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 617,
      "column": 47,
      "kind": "jsx_text",
      "text": "Neutralized Text:",
      "context": "between tags, user-visible text node",
      "line_content": "            <label htmlFor=\"neutralized-text\">Neutralized Text:</label>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 653,
      "column": 45,
      "kind": "jsx_text",
      "text": "Loading sites...",
      "context": "between tags, user-visible text node",
      "line_content": "            <div className={styles.loading}>Loading sites...</div>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 663,
      "column": 34,
      "kind": "jsx_text",
      "text": "Select a site...",
      "context": "between tags, user-visible text node",
      "line_content": "                <option value=\"\">Select a site...</option>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 678,
      "column": 49,
      "kind": "jsx_text",
      "text": "Loading folders...",
      "context": "between tags, user-visible text node",
      "line_content": "                <div className={styles.loading}>Loading folders...</div>"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 740,
      "column": 26,
      "kind": "string_literal",
      "text": "Configuration",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { id: 'config', label: 'Configuration', content: <ConfigTab /> },"
    },
    {
      "file": "src/pages/views/neutralization/NeutralizationView.tsx",
      "line": 741,
      "column": 30,
      "kind": "string_literal",
      "text": "Playground",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { id: 'playground', label: 'Playground', content: <PlaygroundTab /> },"
    },
    {
      "file": "src/pages/views/realestate/RealEstateDashboardView.tsx",
      "line": 57,
      "column": 52,
      "kind": "string_literal",
      "text": "Deine Rolle",
      "context": "string literal",
      "line_content": "                {instance.userRoles.length === 1 ? 'Deine Rolle' : 'Deine Rollen'}"
    },
    {
      "file": "src/pages/views/realestate/RealEstateDashboardView.tsx",
      "line": 57,
      "column": 68,
      "kind": "string_literal",
      "text": "Deine Rollen",
      "context": "string literal",
      "line_content": "                {instance.userRoles.length === 1 ? 'Deine Rolle' : 'Deine Rollen'}"
    },
    {
      "file": "src/pages/views/realestate/RealEstateInstanceRolesPlaceholder.tsx",
      "line": 4,
      "column": 29,
      "kind": "string_literal",
      "text": "Rollen & Rechte",
      "context": "string literal",
      "line_content": " * Platzhalter für die View \"Rollen & Rechte\" bei Real-Estate-Instanzen."
    },
    {
      "file": "src/pages/views/realestate/RealEstateInstanceRolesPlaceholder.tsx",
      "line": 16,
      "column": 11,
      "kind": "jsx_text",
      "text": "Rollen & Rechte",
      "context": "between tags, user-visible text node",
      "line_content": "      <h3>Rollen & Rechte</h3>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateParcelsView.tsx",
      "line": 134,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Parzellen: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Parzellen: {error}</p>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateParcelsView.tsx",
      "line": 147,
      "column": 46,
      "kind": "jsx_text",
      "text": "Parzellen verwalten",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.pageSubtitle}>Parzellen verwalten</p>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateParcelsView.tsx",
      "line": 190,
      "column": 30,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "                      title: 'Löschen',"
    },
    {
      "file": "src/pages/views/realestate/RealEstateParcelsView.tsx",
      "line": 205,
      "column": 26,
      "kind": "string_literal",
      "text": "Keine Parzellen gefunden",
      "context": "string literal",
      "line_content": "            emptyMessage=\"Keine Parzellen gefunden\""
    },
    {
      "file": "src/pages/views/realestate/RealEstateParcelsView.tsx",
      "line": 214,
      "column": 33,
      "kind": "string_literal",
      "text": "Neue Parzelle",
      "context": "string literal",
      "line_content": "                {isCreateMode ? 'Neue Parzelle' : 'Parzelle bearbeiten'}"
    },
    {
      "file": "src/pages/views/realestate/RealEstateParcelsView.tsx",
      "line": 214,
      "column": 51,
      "kind": "string_literal",
      "text": "Parzelle bearbeiten",
      "context": "string literal",
      "line_content": "                {isCreateMode ? 'Neue Parzelle' : 'Parzelle bearbeiten'}"
    },
    {
      "file": "src/pages/views/realestate/RealEstateParcelsView.tsx",
      "line": 224,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateProjectsView.tsx",
      "line": 124,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Projekte: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Projekte: {error}</p>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateProjectsView.tsx",
      "line": 137,
      "column": 46,
      "kind": "jsx_text",
      "text": "Projekte verwalten",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.pageSubtitle}>Projekte verwalten</p>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateProjectsView.tsx",
      "line": 164,
      "column": 66,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "              ...(canDelete ? [{ type: 'delete' as const, title: 'Löschen', loading: (row: RealEstateProject) => deletingItems.has(row.id) }] : []),"
    },
    {
      "file": "src/pages/views/realestate/RealEstateProjectsView.tsx",
      "line": 168,
      "column": 26,
      "kind": "string_literal",
      "text": "Keine Projekte gefunden",
      "context": "string literal",
      "line_content": "            emptyMessage=\"Keine Projekte gefunden\""
    },
    {
      "file": "src/pages/views/realestate/RealEstateProjectsView.tsx",
      "line": 176,
      "column": 65,
      "kind": "string_literal",
      "text": "Neues Projekt",
      "context": "string literal",
      "line_content": "              <h2 className={styles.modalTitle}>{isCreateMode ? 'Neues Projekt' : 'Projekt bearbeiten'}</h2>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateProjectsView.tsx",
      "line": 176,
      "column": 83,
      "kind": "string_literal",
      "text": "Projekt bearbeiten",
      "context": "string literal",
      "line_content": "              <h2 className={styles.modalTitle}>{isCreateMode ? 'Neues Projekt' : 'Projekt bearbeiten'}</h2>"
    },
    {
      "file": "src/pages/views/realestate/RealEstateProjectsView.tsx",
      "line": 183,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/views/realestate/pek/PekLocationInput.tsx",
      "line": 37,
      "column": 25,
      "kind": "string_literal",
      "text": "z.B. Bundesplatz 3",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"z.B. Bundesplatz 3\""
    },
    {
      "file": "src/pages/views/realestate/pek/PekLocationInput.tsx",
      "line": 38,
      "column": 19,
      "kind": "string_literal",
      "text": "Adresse oder Parzelle",
      "context": "string literal",
      "line_content": "            label=\"Adresse oder Parzelle\""
    },
    {
      "file": "src/pages/views/realestate/pek/PekMapView.tsx",
      "line": 33,
      "column": 19,
      "kind": "jsx_text",
      "text": "Alle Parzellen anzeigen",
      "context": "between tags, user-visible text node",
      "line_content": "            <span>Alle Parzellen anzeigen</span>"
    },
    {
      "file": "src/pages/views/realestate/pek/PekMapView.tsx",
      "line": 53,
      "column": 26,
      "kind": "string_literal",
      "text": "Klicken Sie auf die Karte, um einen Standort auszuwählen, oder suchen Sie nach einer Adresse oben.",
      "context": "string literal",
      "line_content": "            emptyMessage=\"Klicken Sie auf die Karte, um einen Standort auszuwählen, oder suchen Sie nach einer Adresse oben.\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 12,
      "column": 13,
      "kind": "string_literal",
      "text": "Mein Account",
      "context": "string literal",
      "line_content": " * Supports \"Mein Account\" login with saved credentials and MFA relay."
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 55,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Laden der Sitzungen",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Laden der Sitzungen');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 103,
      "column": 22,
      "kind": "string_literal",
      "text": "MFA-Zeitlimit ueberschritten. Bitte erneut versuchen.",
      "context": "string literal",
      "line_content": "            setError('MFA-Zeitlimit ueberschritten. Bitte erneut versuchen.');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 139,
      "column": 33,
      "kind": "string_literal",
      "text": "Fehler beim Speichern der Zugangsdaten",
      "context": "string literal",
      "line_content": "        setError(err.message || 'Fehler beim Speichern der Zugangsdaten');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 171,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Starten der Sitzung",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Starten der Sitzung');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 191,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Senden des MFA-Codes",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Senden des MFA-Codes');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 202,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Loeschen der Zugangsdaten",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Loeschen der Zugangsdaten');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 211,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Stoppen der Sitzung",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Stoppen der Sitzung');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 220,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Loeschen der Sitzung",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Loeschen der Sitzung');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 272,
      "column": 31,
      "kind": "string_literal",
      "text": "Code eingeben",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  placeholder=\"Code eingeben\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 300,
      "column": 42,
      "kind": "jsx_text",
      "text": "Neue Bot-Sitzung starten",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.cardTitle}>Neue Bot-Sitzung starten</h3>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 306,
      "column": 43,
      "kind": "jsx_text",
      "text": "Teams Meeting-Link *",
      "context": "between tags, user-visible text node",
      "line_content": "          <label className={styles.label}>Teams Meeting-Link *</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 325,
      "column": 55,
      "kind": "jsx_text",
      "text": "System-Bot (authentifiziert)",
      "context": "between tags, user-visible text node",
      "line_content": "            {_isSysAdmin && <option value=\"systemBot\">System-Bot (authentifiziert)</option>}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 326,
      "column": 39,
      "kind": "jsx_text",
      "text": "Anonymer Gast",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"anonymous\">Anonymer Gast</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 327,
      "column": 41,
      "kind": "jsx_text",
      "text": "Mein Account",
      "context": "between tags, user-visible text node",
      "line_content": "            <option value=\"userAccount\">Mein Account</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 354,
      "column": 51,
      "kind": "jsx_text",
      "text": "Microsoft E-Mail",
      "context": "between tags, user-visible text node",
      "line_content": "                  <label className={styles.label}>Microsoft E-Mail</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 358,
      "column": 33,
      "kind": "string_literal",
      "text": "name@example.com",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                    placeholder=\"name@example.com\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 369,
      "column": 33,
      "kind": "string_literal",
      "text": "Microsoft-Passwort",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                    placeholder=\"Microsoft-Passwort\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 393,
      "column": 43,
      "kind": "jsx_text",
      "text": "Bot-Name (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "          <label className={styles.label}>Bot-Name (optional)</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 397,
      "column": 25,
      "kind": "string_literal",
      "text": "AI Assistant",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"AI Assistant\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 405,
      "column": 43,
      "kind": "jsx_text",
      "text": "Session-Kontext (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "          <label className={styles.label}>Session-Kontext (optional)</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 408,
      "column": 25,
      "kind": "string_literal",
      "text": "Agenda, Hintergrundinformationen, Dokumente oder andere Informationen fuer den Bot...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            placeholder=\"Agenda, Hintergrundinformationen, Dokumente oder andere Informationen fuer den Bot...\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 426,
      "column": 25,
      "kind": "string_literal",
      "text": "Wird gestartet...",
      "context": "string literal",
      "line_content": "          {isStarting ? 'Wird gestartet...' : 'Bot ins Meeting senden'}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 426,
      "column": 47,
      "kind": "string_literal",
      "text": "Bot ins Meeting senden",
      "context": "string literal",
      "line_content": "          {isStarting ? 'Wird gestartet...' : 'Bot ins Meeting senden'}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 435,
      "column": 47,
      "kind": "jsx_text",
      "text": "Aktive Sitzungen",
      "context": "between tags, user-visible text node",
      "line_content": "          <h3 className={styles.sectionTitle}>Aktive Sitzungen</h3>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 448,
      "column": 47,
      "kind": "jsx_text",
      "text": "Seit: {new Date(session.startedAt).toLocaleTimeString('de-CH')}",
      "context": "between tags, user-visible text node",
      "line_content": "                  {session.startedAt && <span>Seit: {new Date(session.startedAt).toLocaleTimeString('de-CH')}</span>}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 451,
      "column": 72,
      "kind": "jsx_text",
      "text": "navigate(`/mandates/${mandateId}/${featureCode}/${instanceId}/sessions?sessionId=${session.id}`)}>Live ansehen",
      "context": "between tags, user-visible text node",
      "line_content": "                  <button className={styles.viewButton} onClick={() => navigate(`/mandates/${mandateId}/${featureCode}/${instanceId}/sessions?sessionId=${session.id}`)}>Live ansehen</button>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 467,
      "column": 22,
      "kind": "string_literal",
      "text": "Lade Sitzungen...",
      "context": "string literal",
      "line_content": "          {loading ? 'Lade Sitzungen...' : `Vergangene Sitzungen (${pastSessions.length})`}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotDashboardView.tsx",
      "line": 470,
      "column": 44,
      "kind": "jsx_text",
      "text": "Noch keine vergangenen Sitzungen.",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.emptyState}>Noch keine vergangenen Sitzungen.</p>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 87,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Laden der Sitzung",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Laden der Sitzung');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 199,
      "column": 47,
      "kind": "string_literal",
      "text": "Unbekannter Fehler",
      "context": "string literal",
      "line_content": "            const errMsg = errData.message || 'Unbekannter Fehler';"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 280,
      "column": 55,
      "kind": "jsx_text",
      "text": "Lade Sitzung...",
      "context": "between tags, user-visible text node",
      "line_content": "  if (loading) return <div className={styles.loading}>Lade Sitzung...</div>;"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 283,
      "column": 10,
      "kind": "jsx_text",
      "text": "Keine Sitzungen vorhanden.",
      "context": "between tags, user-visible text node",
      "line_content": "      <p>Keine Sitzungen vorhanden.</p>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 287,
      "column": 60,
      "kind": "jsx_text",
      "text": "Sitzung nicht gefunden",
      "context": "between tags, user-visible text node",
      "line_content": "  if (!session) return <div className={styles.errorBanner}>Sitzung nicht gefunden</div>;"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 305,
      "column": 46,
      "kind": "string_literal",
      "text": "2px solid #4A90D9",
      "context": "string literal",
      "line_content": "                border: s.id === sessionId ? '2px solid #4A90D9' : '1px solid #ddd',"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 305,
      "column": 68,
      "kind": "string_literal",
      "text": "1px solid #ddd",
      "context": "string literal",
      "line_content": "                border: s.id === sessionId ? '2px solid #4A90D9' : '1px solid #ddd',"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 313,
      "column": 71,
      "kind": "string_literal",
      "text": " (aktiv)",
      "context": "string literal",
      "line_content": "              {['active', 'joining', 'pending'].includes(s.status) && ' (aktiv)'}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 314,
      "column": 40,
      "kind": "string_literal",
      "text": " (beendet)",
      "context": "string literal",
      "line_content": "              {s.status === 'ended' && ' (beendet)'}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 331,
      "column": 73,
      "kind": "jsx_text",
      "text": "Sitzung beenden",
      "context": "between tags, user-visible text node",
      "line_content": "            <button className={styles.stopButton} onClick={_handleStop}>Sitzung beenden</button>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 342,
      "column": 45,
      "kind": "jsx_text",
      "text": "Transkript ({transcripts.length} Segmente)",
      "context": "between tags, user-visible text node",
      "line_content": "          <h4 className={styles.panelTitle}>Transkript ({transcripts.length} Segmente)</h4>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 358,
      "column": 50,
      "kind": "jsx_text",
      "text": "Noch kein Transkript vorhanden.",
      "context": "between tags, user-visible text node",
      "line_content": "              <div className={styles.emptyState}>Noch kein Transkript vorhanden.</div>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 365,
      "column": 45,
      "kind": "jsx_text",
      "text": "Bot-Antworten ({botResponses.length})",
      "context": "between tags, user-visible text node",
      "line_content": "          <h4 className={styles.panelTitle}>Bot-Antworten ({botResponses.length})</h4>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 376,
      "column": 25,
      "kind": "jsx_text",
      "text": "Reasoning: {r.reasoning}",
      "context": "between tags, user-visible text node",
      "line_content": "                    <em>Reasoning: {r.reasoning}</em>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 389,
      "column": 50,
      "kind": "jsx_text",
      "text": "Noch keine Bot-Antworten.",
      "context": "between tags, user-visible text node",
      "line_content": "              <div className={styles.emptyState}>Noch keine Bot-Antworten.</div>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 405,
      "column": 43,
      "kind": "jsx_text",
      "text": "TTS Delivery Status",
      "context": "between tags, user-visible text node",
      "line_content": "        <h4 className={styles.panelTitle}>TTS Delivery Status</h4>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 407,
      "column": 46,
      "kind": "jsx_text",
      "text": "Noch keine TTS-Events.",
      "context": "between tags, user-visible text node",
      "line_content": "          <div className={styles.emptyState}>Noch keine TTS-Events.</div>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 414,
      "column": 23,
      "kind": "jsx_text",
      "text": "ws: {ev.hasWebSocket ? 'yes' : 'no'}",
      "context": "between tags, user-visible text node",
      "line_content": "                <span>ws: {ev.hasWebSocket ? 'yes' : 'no'}</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 459,
      "column": 88,
      "kind": "string_literal",
      "text": "Screenshots laden",
      "context": "string literal",
      "line_content": "              {screenshotsLoading ? 'Laden...' : screenshotsLoaded ? 'Aktualisieren' : 'Screenshots laden'}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 463,
      "column": 48,
      "kind": "jsx_text",
      "text": "Keine Screenshots fuer diese Session.",
      "context": "between tags, user-visible text node",
      "line_content": "            <div className={styles.emptyState}>Keine Screenshots fuer diese Session.</div>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSessionView.tsx",
      "line": 474,
      "column": 25,
      "kind": "string_literal",
      "text": "noopener noreferrer",
      "context": "string literal",
      "line_content": "                    rel=\"noopener noreferrer\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 8,
      "column": 57,
      "kind": "string_literal",
      "text": "Wavenet A",
      "context": "string literal",
      "line_content": "/** Format voice name for display: \"de-DE-Wavenet-A\" -> \"Wavenet A\" + gender */"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 60,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Laden der Konfiguration",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Laden der Konfiguration');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 81,
      "column": 21,
      "kind": "string_literal",
      "text": "Einstellungen gespeichert",
      "context": "string literal",
      "line_content": "      setSuccessMsg('Einstellungen gespeichert');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 84,
      "column": 31,
      "kind": "string_literal",
      "text": "Fehler beim Speichern",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Fehler beim Speichern');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 117,
      "column": 43,
      "kind": "string_literal",
      "text": "AI Assistant",
      "context": "string literal",
      "line_content": "      const botName = formData.botName || 'AI Assistant';"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 135,
      "column": 34,
      "kind": "string_literal",
      "text": "Stimmtest fehlgeschlagen",
      "context": "string literal",
      "line_content": "        setError(result.error || 'Stimmtest fehlgeschlagen');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 139,
      "column": 31,
      "kind": "string_literal",
      "text": "Stimmtest fehlgeschlagen",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Stimmtest fehlgeschlagen');"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 146,
      "column": 55,
      "kind": "jsx_text",
      "text": "Lade Konfiguration...",
      "context": "between tags, user-visible text node",
      "line_content": "  if (loading) return <div className={styles.loading}>Lade Konfiguration...</div>;"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 167,
      "column": 27,
      "kind": "string_literal",
      "text": "AI Assistant",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"AI Assistant\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 170,
      "column": 123,
      "kind": "string_literal",
      "text": "Nyla Larsson",
      "context": "string literal",
      "line_content": "              Default-Name fuer den Bot im Meeting. Falls keiner angegeben, wird der Name des System-Bots verwendet (z.B. \"Nyla Larsson\")."
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 186,
      "column": 27,
      "kind": "string_literal",
      "text": "Beschreibe, wie sich der Bot im Meeting verhalten soll...",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Beschreibe, wie sich der Bot im Meeting verhalten soll...\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 188,
      "column": 43,
      "kind": "jsx_text",
      "text": "Instruktionen fuer den AI-Bot: Wann und wie soll er antworten?",
      "context": "between tags, user-visible text node",
      "line_content": "            <span className={styles.hint}>Instruktionen fuer den AI-Bot: Wann und wie soll er antworten?</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 198,
      "column": 36,
      "kind": "jsx_text",
      "text": "Automatisch - AI entscheidet selbst",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"auto\">Automatisch - AI entscheidet selbst</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 199,
      "column": 38,
      "kind": "jsx_text",
      "text": "Manuell - Antworten muessen bestaetigt werden",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"manual\">Manuell - Antworten muessen bestaetigt werden</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 200,
      "column": 46,
      "kind": "jsx_text",
      "text": "Nur Transkription - Keine AI-Antworten",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"transcribeOnly\">Nur Transkription - Keine AI-Antworten</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 211,
      "column": 37,
      "kind": "jsx_text",
      "text": "Nur Sprache - Bot antwortet per Audio",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"voice\">Nur Sprache - Bot antwortet per Audio</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 212,
      "column": 36,
      "kind": "jsx_text",
      "text": "Nur Chat - Bot antwortet per Textnachricht",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"chat\">Nur Chat - Bot antwortet per Textnachricht</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 213,
      "column": 36,
      "kind": "jsx_text",
      "text": "Sprache + Chat - Bot antwortet per Audio und Text",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"both\">Sprache + Chat - Bot antwortet per Audio und Text</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 215,
      "column": 43,
      "kind": "jsx_text",
      "text": "Wie soll der Bot im Meeting antworten?",
      "context": "between tags, user-visible text node",
      "line_content": "            <span className={styles.hint}>Wie soll der Bot im Meeting antworten?</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 225,
      "column": 36,
      "kind": "jsx_text",
      "text": "Automatisch - System waehlt basierend auf Join-Modus",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"auto\">Automatisch - System waehlt basierend auf Join-Modus</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 226,
      "column": 39,
      "kind": "jsx_text",
      "text": "Captions - Teams Live-Captions (nur Englisch verfuegbar)",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"caption\">Captions - Teams Live-Captions (nur Englisch verfuegbar)</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 227,
      "column": 37,
      "kind": "jsx_text",
      "text": "Audio-Stream - Echtzeit-Spracherkennung ueber Gateway (alle Sprachen)",
      "context": "between tags, user-visible text node",
      "line_content": "              <option value=\"audio\">Audio-Stream - Echtzeit-Spracherkennung ueber Gateway (alle Sprachen)</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 252,
      "column": 41,
      "kind": "jsx_text",
      "text": "Deutsch (Deutschland)",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"de-DE\">Deutsch (Deutschland)</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 253,
      "column": 41,
      "kind": "jsx_text",
      "text": "English (US)",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"en-US\">English (US)</option>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 258,
      "column": 43,
      "kind": "jsx_text",
      "text": "Sprache fuer Captions und Sprachausgabe ({languages.length} Sprachen verfuegbar)",
      "context": "between tags, user-visible text node",
      "line_content": "            <span className={styles.hint}>Sprache fuer Captions und Sprachausgabe ({languages.length} Sprachen verfuegbar)</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 282,
      "column": 23,
      "kind": "string_literal",
      "text": "Stimme testen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                title=\"Stimme testen\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 290,
      "column": 32,
      "kind": "string_literal",
      "text": "Lade Stimmen...",
      "context": "string literal",
      "line_content": "              {loadingVoices ? 'Lade Stimmen...' : `${voices.length} Stimmen verfuegbar - klicke Test fuer Vorschau`}"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 297,
      "column": 47,
      "kind": "jsx_text",
      "text": "Erweiterte Einstellungen",
      "context": "between tags, user-visible text node",
      "line_content": "          <h4 className={styles.sectionTitle}>Erweiterte Einstellungen</h4>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 301,
      "column": 47,
      "kind": "jsx_text",
      "text": "Analyse-Intervall (Sek.)",
      "context": "between tags, user-visible text node",
      "line_content": "              <label className={styles.label}>Analyse-Intervall (Sek.)</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 310,
      "column": 45,
      "kind": "jsx_text",
      "text": "Periodisches Analyse-Intervall",
      "context": "between tags, user-visible text node",
      "line_content": "              <span className={styles.hint}>Periodisches Analyse-Intervall</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 314,
      "column": 47,
      "kind": "jsx_text",
      "text": "Cooldown (Sek.)",
      "context": "between tags, user-visible text node",
      "line_content": "              <label className={styles.label}>Cooldown (Sek.)</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 323,
      "column": 45,
      "kind": "jsx_text",
      "text": "Min. Abstand zwischen AI-Calls",
      "context": "between tags, user-visible text node",
      "line_content": "              <span className={styles.hint}>Min. Abstand zwischen AI-Calls</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 327,
      "column": 47,
      "kind": "jsx_text",
      "text": "Kontext-Fenster (Segmente)",
      "context": "between tags, user-visible text node",
      "line_content": "              <label className={styles.label}>Kontext-Fenster (Segmente)</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 336,
      "column": 45,
      "kind": "jsx_text",
      "text": "Anzahl Transkript-Segmente fuer AI-Kontext",
      "context": "between tags, user-visible text node",
      "line_content": "              <span className={styles.hint}>Anzahl Transkript-Segmente fuer AI-Kontext</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 341,
      "column": 45,
      "kind": "jsx_text",
      "text": "Browser Bot URL (optional)",
      "context": "between tags, user-visible text node",
      "line_content": "            <label className={styles.label}>Browser Bot URL (optional)</label>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 347,
      "column": 27,
      "kind": "string_literal",
      "text": "Automatisch aus Umgebungskonfiguration",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              placeholder=\"Automatisch aus Umgebungskonfiguration\""
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 349,
      "column": 43,
      "kind": "jsx_text",
      "text": "URL des Browser Bot Service. Leer lassen fuer Standard-Konfiguration.",
      "context": "between tags, user-visible text node",
      "line_content": "            <span className={styles.hint}>URL des Browser Bot Service. Leer lassen fuer Standard-Konfiguration.</span>"
    },
    {
      "file": "src/pages/views/teamsbot/TeamsbotSettingsView.tsx",
      "line": 375,
      "column": 40,
      "kind": "string_literal",
      "text": "Konfiguration speichern",
      "context": "string literal",
      "line_content": "            {saving ? 'Speichern...' : 'Konfiguration speichern'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeAccountingSettingsView.tsx",
      "line": 193,
      "column": 18,
      "kind": "jsx_text",
      "text": "&middot; {t('Letzter Sync:')} {existingConfig.lastSyncStatus}",
      "context": "between tags, user-visible text node",
      "line_content": "              <> &middot; {t('Letzter Sync:')} {existingConfig.lastSyncStatus}</>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeAccountingSettingsView.tsx",
      "line": 209,
      "column": 26,
      "kind": "jsx_text",
      "text": "&middot; {t('Status:')} {existingConfig.lastSyncStatus}",
      "context": "between tags, user-visible text node",
      "line_content": "                      <> &middot; {t('Status:')} {existingConfig.lastSyncStatus}</>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeAccountingSettingsView.tsx",
      "line": 293,
      "column": 19,
      "kind": "jsx_text",
      "text": "Save & Test",
      "context": "between tags, user-visible text node",
      "line_content": "              <h4>Save & Test</h4>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeAccountingSettingsView.tsx",
      "line": 458,
      "column": 24,
      "kind": "jsx_text",
      "text": "&middot; {t('Letzter Import:')} {new Date(importStatus.lastSyncAt * 1000).toLocaleString()}",
      "context": "between tags, user-visible text node",
      "line_content": "                    <> &middot; {t('Letzter Import:')} {new Date(importStatus.lastSyncAt * 1000).toLocaleString()}</>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDashboardView.tsx",
      "line": 81,
      "column": 21,
      "kind": "string_literal",
      "text": "Not configured",
      "context": "string literal",
      "line_content": "                  : 'Not configured'"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDashboardView.tsx",
      "line": 99,
      "column": 59,
      "kind": "string_literal",
      "text": "Deine Rolle",
      "context": "string literal",
      "line_content": "              {(instance?.userRoles?.length || 0) === 1 ? 'Deine Rolle' : 'Deine Rollen'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDashboardView.tsx",
      "line": 99,
      "column": 75,
      "kind": "string_literal",
      "text": "Deine Rollen",
      "context": "string literal",
      "line_content": "              {(instance?.userRoles?.length || 0) === 1 ? 'Deine Rolle' : 'Deine Rollen'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 139,
      "column": 27,
      "kind": "string_literal",
      "text": "Fehler beim Herunterladen des Dokuments.",
      "context": "string literal",
      "line_content": "      showError('Fehler', 'Fehler beim Herunterladen des Dokuments.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 171,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Dokumente: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Dokumente: {error}</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 184,
      "column": 46,
      "kind": "jsx_text",
      "text": "Belege und Dokumente verwalten",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.pageSubtitle}>Belege und Dokumente verwalten</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 225,
      "column": 24,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "                title: 'Löschen',"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 247,
      "column": 26,
      "kind": "string_literal",
      "text": "Keine Dokumente gefunden",
      "context": "string literal",
      "line_content": "            emptyMessage=\"Keine Dokumente gefunden\""
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 257,
      "column": 33,
      "kind": "string_literal",
      "text": "Neues Dokument",
      "context": "string literal",
      "line_content": "                {isCreateMode ? 'Neues Dokument' : 'Dokument bearbeiten'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 257,
      "column": 52,
      "kind": "string_literal",
      "text": "Dokument bearbeiten",
      "context": "string literal",
      "line_content": "                {isCreateMode ? 'Neues Dokument' : 'Dokument bearbeiten'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeDocumentsView.tsx",
      "line": 270,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 71,
      "column": 30,
      "kind": "string_literal",
      "text": "Trustee Expense Import",
      "context": "string literal",
      "line_content": "const EXPENSE_IMPORT_LABEL = 'Trustee Expense Import';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 72,
      "column": 20,
      "kind": "string_literal",
      "text": "0 22 * * *",
      "context": "string literal",
      "line_content": "const DAILY_CRON = '0 22 * * *';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 241,
      "column": 65,
      "kind": "string_literal",
      "text": "Failed to load SharePoint sites",
      "context": "string literal",
      "line_content": "      setError(_parseErrorDetail(err.response?.data?.detail) || 'Failed to load SharePoint sites');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 263,
      "column": 65,
      "kind": "string_literal",
      "text": "Failed to load folders",
      "context": "string literal",
      "line_content": "      setError(_parseErrorDetail(err.response?.data?.detail) || 'Failed to load folders');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 318,
      "column": 31,
      "kind": "string_literal",
      "text": "Microsoft connection failed",
      "context": "string literal",
      "line_content": "      setError(err.message || 'Microsoft connection failed');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 326,
      "column": 17,
      "kind": "string_literal",
      "text": "Missing Connection",
      "context": "string literal",
      "line_content": "      showError('Missing Connection', 'Please select a Microsoft connection first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 326,
      "column": 39,
      "kind": "string_literal",
      "text": "Please select a Microsoft connection first.",
      "context": "string literal",
      "line_content": "      showError('Missing Connection', 'Please select a Microsoft connection first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 330,
      "column": 17,
      "kind": "string_literal",
      "text": "Missing Folder",
      "context": "string literal",
      "line_content": "      showError('Missing Folder', 'Please select a SharePoint folder first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 330,
      "column": 35,
      "kind": "string_literal",
      "text": "Please select a SharePoint folder first.",
      "context": "string literal",
      "line_content": "      showError('Missing Folder', 'Please select a SharePoint folder first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 334,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', 'Feature instance not found. Please refresh the page.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 334,
      "column": 26,
      "kind": "string_literal",
      "text": "Feature instance not found. Please refresh the page.",
      "context": "string literal",
      "line_content": "      showError('Error', 'Feature instance not found. Please refresh the page.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 357,
      "column": 16,
      "kind": "string_literal",
      "text": "Daily at 22:00",
      "context": "object property label: (e.g. table column)",
      "line_content": "        label: 'Daily at 22:00',"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 373,
      "column": 13,
      "kind": "string_literal",
      "text": "Expense import workflow updated and activated!",
      "context": "string literal",
      "line_content": "          ? 'Expense import workflow updated and activated!'"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 374,
      "column": 13,
      "kind": "string_literal",
      "text": "Expense import workflow updated and deactivated.",
      "context": "string literal",
      "line_content": "          : 'Expense import workflow updated and deactivated.';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 376,
      "column": 21,
      "kind": "string_literal",
      "text": "Success",
      "context": "string literal",
      "line_content": "        showSuccess('Success', msg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 387,
      "column": 21,
      "kind": "string_literal",
      "text": "Expense import workflow created and activated! It will run daily at 22:00.",
      "context": "string literal",
      "line_content": "        const msg = 'Expense import workflow created and activated! It will run daily at 22:00.';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 389,
      "column": 21,
      "kind": "string_literal",
      "text": "Success",
      "context": "string literal",
      "line_content": "        showSuccess('Success', msg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 404,
      "column": 88,
      "kind": "string_literal",
      "text": "Failed to save workflow",
      "context": "string literal",
      "line_content": "      const errorMsg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to save workflow';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 406,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', errorMsg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 414,
      "column": 17,
      "kind": "string_literal",
      "text": "Missing data",
      "context": "string literal",
      "line_content": "      showError('Missing data', 'Please select connection and folder first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 414,
      "column": 33,
      "kind": "string_literal",
      "text": "Please select connection and folder first.",
      "context": "string literal",
      "line_content": "      showError('Missing data', 'Please select connection and folder first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 431,
      "column": 30,
      "kind": "string_literal",
      "text": "Workflow started. Extract → Process → Sync will run once.",
      "context": "string literal",
      "line_content": "      showSuccess('Started', 'Workflow started. Extract → Process → Sync will run once.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 433,
      "column": 83,
      "kind": "string_literal",
      "text": "Failed to start workflow",
      "context": "string literal",
      "line_content": "      const msg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to start workflow';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 435,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', msg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 454,
      "column": 25,
      "kind": "string_literal",
      "text": "Expense import workflow deactivated.",
      "context": "string literal",
      "line_content": "      setSuccessMessage('Expense import workflow deactivated.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 455,
      "column": 34,
      "kind": "string_literal",
      "text": "Expense import workflow deactivated.",
      "context": "string literal",
      "line_content": "      showSuccess('Deactivated', 'Expense import workflow deactivated.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 458,
      "column": 88,
      "kind": "string_literal",
      "text": "Failed to deactivate workflow",
      "context": "string literal",
      "line_content": "      const errorMsg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to deactivate workflow';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 460,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', errorMsg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 469,
      "column": 45,
      "kind": "jsx_text",
      "text": "Expense Import Setup",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.sectionTitle}>Expense Import Setup</h3>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 478,
      "column": 19,
      "kind": "string_literal",
      "text": "How it works",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            title=\"How it works\""
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 484,
      "column": 23,
      "kind": "jsx_text",
      "text": "How it works:",
      "context": "between tags, user-visible text node",
      "line_content": "              <strong>How it works:</strong>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 486,
      "column": 21,
      "kind": "jsx_text",
      "text": "Place expense PDF documents (receipts, invoices) in the selected SharePoint folder",
      "context": "between tags, user-visible text node",
      "line_content": "                <li>Place expense PDF documents (receipts, invoices) in the selected SharePoint folder</li>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 487,
      "column": 21,
      "kind": "jsx_text",
      "text": "The system runs daily at 22:00 and processes all PDF files",
      "context": "between tags, user-visible text node",
      "line_content": "                <li>The system runs daily at 22:00 and processes all PDF files</li>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 488,
      "column": 21,
      "kind": "jsx_text",
      "text": "AI extracts expense data: date, amount, VAT, company, description",
      "context": "between tags, user-visible text node",
      "line_content": "                <li>AI extracts expense data: date, amount, VAT, company, description</li>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 489,
      "column": 21,
      "kind": "jsx_text",
      "text": "Each expense is saved as a position in this Trustee instance",
      "context": "between tags, user-visible text node",
      "line_content": "                <li>Each expense is saved as a position in this Trustee instance</li>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 490,
      "column": 21,
      "kind": "jsx_text",
      "text": "Processed PDFs are moved to a \"processed\" subfolder",
      "context": "between tags, user-visible text node",
      "line_content": "                <li>Processed PDFs are moved to a \"processed\" subfolder</li>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 491,
      "column": 21,
      "kind": "jsx_text",
      "text": "Failed PDFs are moved to an \"error\" subfolder",
      "context": "between tags, user-visible text node",
      "line_content": "                <li>Failed PDFs are moved to an \"error\" subfolder</li>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 492,
      "column": 21,
      "kind": "jsx_text",
      "text": "Maximum 50 PDFs are processed per run",
      "context": "between tags, user-visible text node",
      "line_content": "                <li>Maximum 50 PDFs are processed per run</li>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 513,
      "column": 21,
      "kind": "jsx_text",
      "text": "Current Status:",
      "context": "between tags, user-visible text node",
      "line_content": "            <strong>Current Status:</strong> {existingWorkflow.active ? '✓ Active' : '○ Inactive'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 513,
      "column": 73,
      "kind": "string_literal",
      "text": "✓ Active",
      "context": "string literal",
      "line_content": "            <strong>Current Status:</strong> {existingWorkflow.active ? '✓ Active' : '○ Inactive'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 513,
      "column": 86,
      "kind": "string_literal",
      "text": "○ Inactive",
      "context": "string literal",
      "line_content": "            <strong>Current Status:</strong> {existingWorkflow.active ? '✓ Active' : '○ Inactive'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 515,
      "column": 23,
      "kind": "jsx_text",
      "text": "Folder: {existingWorkflow.sharepointFolder}",
      "context": "between tags, user-visible text node",
      "line_content": "              <><br />Folder: {existingWorkflow.sharepointFolder}</>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 524,
      "column": 17,
      "kind": "jsx_text",
      "text": "Microsoft Connection",
      "context": "between tags, user-visible text node",
      "line_content": "            <h4>Microsoft Connection</h4>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 531,
      "column": 51,
      "kind": "string_literal",
      "text": "Connect Microsoft Account",
      "context": "string literal",
      "line_content": "                {isConnecting ? 'Connecting...' : 'Connect Microsoft Account'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 537,
      "column": 75,
      "kind": "string_literal",
      "text": "Microsoft Account",
      "context": "string literal",
      "line_content": "                  Connected as <strong>{msftConnections[0].accountName || 'Microsoft Account'}</strong>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 554,
      "column": 36,
      "kind": "jsx_text",
      "text": "Select a Microsoft account...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"\">Select a Microsoft account...</option>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 567,
      "column": 53,
      "kind": "string_literal",
      "text": "Add another account",
      "context": "string literal",
      "line_content": "                  {isConnecting ? 'Connecting...' : 'Add another account'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 579,
      "column": 19,
      "kind": "jsx_text",
      "text": "SharePoint Site",
      "context": "between tags, user-visible text node",
      "line_content": "              <h4>SharePoint Site</h4>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 581,
      "column": 53,
      "kind": "jsx_text",
      "text": "Loading sites...",
      "context": "between tags, user-visible text node",
      "line_content": "                <div className={styles.loadingText}>Loading sites...</div>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 588,
      "column": 36,
      "kind": "jsx_text",
      "text": "Select a site...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <option value=\"\">Select a site...</option>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 605,
      "column": 19,
      "kind": "jsx_text",
      "text": "Expense Folder",
      "context": "between tags, user-visible text node",
      "line_content": "              <h4>Expense Folder</h4>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 610,
      "column": 53,
      "kind": "jsx_text",
      "text": "Loading folders...",
      "context": "between tags, user-visible text node",
      "line_content": "                <div className={styles.loadingText}>Loading folders...</div>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 651,
      "column": 57,
      "kind": "jsx_text",
      "text": "No subfolders found",
      "context": "between tags, user-visible text node",
      "line_content": "                      <div className={styles.emptyText}>No subfolders found</div>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 670,
      "column": 39,
      "kind": "string_literal",
      "text": "Update Configuration",
      "context": "string literal",
      "line_content": "              <h4>{existingWorkflow ? 'Update Configuration' : 'Activate Daily Import'}</h4>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 670,
      "column": 64,
      "kind": "string_literal",
      "text": "Activate Daily Import",
      "context": "string literal",
      "line_content": "              <h4>{existingWorkflow ? 'Update Configuration' : 'Activate Daily Import'}</h4>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 681,
      "column": 69,
      "kind": "string_literal",
      "text": "Save & Activate",
      "context": "string literal",
      "line_content": "                  {isActivating ? 'Saving...' : (existingWorkflow ? 'Save & Activate' : 'Activate Daily Import')}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 681,
      "column": 89,
      "kind": "string_literal",
      "text": "Activate Daily Import",
      "context": "string literal",
      "line_content": "                  {isActivating ? 'Saving...' : (existingWorkflow ? 'Save & Activate' : 'Activate Daily Import')}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeExpenseImportView.tsx",
      "line": 688,
      "column": 51,
      "kind": "string_literal",
      "text": "Jetzt ausführen",
      "context": "string literal",
      "line_content": "                  {isRunningNow ? 'Starting...' : 'Jetzt ausführen'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeInstanceRolesView.tsx",
      "line": 56,
      "column": 69,
      "kind": "string_literal",
      "text": "Fehler beim Laden der Rollen",
      "context": "string literal",
      "line_content": "      const errorMsg = err.response?.data?.detail || err.message || 'Fehler beim Laden der Rollen';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeInstanceRolesView.tsx",
      "line": 76,
      "column": 39,
      "kind": "jsx_text",
      "text": "Keine Feature-Instanz ausgewählt",
      "context": "between tags, user-visible text node",
      "line_content": "        <div className={styles.error}>Keine Feature-Instanz ausgewählt</div>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeInstanceRolesView.tsx",
      "line": 84,
      "column": 41,
      "kind": "jsx_text",
      "text": "Lade Instanz-Rollen...",
      "context": "between tags, user-visible text node",
      "line_content": "        <div className={styles.loading}>Lade Instanz-Rollen...</div>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeInstanceRolesView.tsx",
      "line": 132,
      "column": 14,
      "kind": "jsx_text",
      "text": "Keine Instanz-Rollen gefunden",
      "context": "between tags, user-visible text node",
      "line_content": "          <p>Keine Instanz-Rollen gefunden</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 139,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Verknüpfungen: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Verknüpfungen: {error}</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 152,
      "column": 46,
      "kind": "jsx_text",
      "text": "Belege mit Buchungspositionen verknüpfen",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.pageSubtitle}>Belege mit Buchungspositionen verknüpfen</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 188,
      "column": 24,
      "kind": "string_literal",
      "text": "Verknüpfung bearbeiten",
      "context": "string literal",
      "line_content": "                title: 'Verknüpfung bearbeiten',"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 194,
      "column": 24,
      "kind": "string_literal",
      "text": "Verknüpfung entfernen",
      "context": "string literal",
      "line_content": "                title: 'Verknüpfung entfernen',"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 206,
      "column": 26,
      "kind": "string_literal",
      "text": "Keine Verknüpfungen gefunden",
      "context": "string literal",
      "line_content": "            emptyMessage=\"Keine Verknüpfungen gefunden\""
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 215,
      "column": 49,
      "kind": "jsx_text",
      "text": "Neue Verknüpfung erstellen",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Neue Verknüpfung erstellen</h2>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 227,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 236,
      "column": 36,
      "kind": "string_literal",
      "text": "Verknüpfung erstellen",
      "context": "string literal",
      "line_content": "                  submitButtonText=\"Verknüpfung erstellen\""
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 251,
      "column": 49,
      "kind": "jsx_text",
      "text": "Verknüpfung bearbeiten",
      "context": "between tags, user-visible text node",
      "line_content": "              <h2 className={styles.modalTitle}>Verknüpfung bearbeiten</h2>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionDocumentsView.tsx",
      "line": 263,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 91,
      "column": 21,
      "kind": "string_literal",
      "text": "Sync teilweise fehlgeschlagen",
      "context": "string literal",
      "line_content": "          showError('Sync teilweise fehlgeschlagen', `${res.success} OK, ${res.errors} Fehler.`);"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 94,
      "column": 21,
      "kind": "string_literal",
      "text": "Sync fehlgeschlagen",
      "context": "string literal",
      "line_content": "          showError('Sync fehlgeschlagen', firstError?.errorMessage || `${res.errors} Fehler.`);"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 99,
      "column": 19,
      "kind": "string_literal",
      "text": "Sync fehlgeschlagen",
      "context": "string literal",
      "line_content": "        showError('Sync fehlgeschlagen', err.response?.data?.detail || err.message || 'Unbekannter Fehler.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 99,
      "column": 87,
      "kind": "string_literal",
      "text": "Unbekannter Fehler.",
      "context": "string literal",
      "line_content": "        showError('Sync fehlgeschlagen', err.response?.data?.detail || err.message || 'Unbekannter Fehler.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 127,
      "column": 31,
      "kind": "string_literal",
      "text": "Dokument nicht gefunden.",
      "context": "string literal",
      "line_content": "          showError('Fehler', 'Dokument nicht gefunden.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 145,
      "column": 29,
      "kind": "string_literal",
      "text": "Fehler beim Herunterladen des Dokuments.",
      "context": "string literal",
      "line_content": "        showError('Fehler', 'Fehler beim Herunterladen des Dokuments.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 163,
      "column": 12,
      "kind": "string_literal",
      "text": "Belege",
      "context": "object property label: (e.g. table column)",
      "line_content": "    label: 'Belege',"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 190,
      "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/views/trustee/TrusteePositionsView.tsx",
      "line": 228,
      "column": 14,
      "kind": "string_literal",
      "text": "Sync-Status",
      "context": "object property label: (e.g. table column)",
      "line_content": "      label: 'Sync-Status',"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 393,
      "column": 46,
      "kind": "jsx_text",
      "text": "Fehler beim Laden der Positionen: {error}",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.errorMessage}>Fehler beim Laden der Positionen: {error}</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 406,
      "column": 46,
      "kind": "jsx_text",
      "text": "Buchungspositionen verwalten",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.pageSubtitle}>Buchungspositionen verwalten</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 441,
      "column": 24,
      "kind": "string_literal",
      "text": "Buchhaltung synchronisieren",
      "context": "object property label: (e.g. table column)",
      "line_content": "                label: 'Buchhaltung synchronisieren',"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 455,
      "column": 24,
      "kind": "string_literal",
      "text": "Löschen",
      "context": "string literal",
      "line_content": "                title: 'Löschen',"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 463,
      "column": 24,
      "kind": "string_literal",
      "text": "In Buchhaltung synchronisieren",
      "context": "string literal",
      "line_content": "                title: 'In Buchhaltung synchronisieren',"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 477,
      "column": 26,
      "kind": "string_literal",
      "text": "Keine Positionen gefunden",
      "context": "string literal",
      "line_content": "            emptyMessage=\"Keine Positionen gefunden\""
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 487,
      "column": 33,
      "kind": "string_literal",
      "text": "Neue Position",
      "context": "string literal",
      "line_content": "                {isCreateMode ? 'Neue Position' : 'Position bearbeiten'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 487,
      "column": 51,
      "kind": "string_literal",
      "text": "Position bearbeiten",
      "context": "string literal",
      "line_content": "                {isCreateMode ? 'Neue Position' : 'Position bearbeiten'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteePositionsView.tsx",
      "line": 500,
      "column": 25,
      "kind": "jsx_text",
      "text": "Lade Formular...",
      "context": "between tags, user-visible text node",
      "line_content": "                  <span>Lade Formular...</span>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 77,
      "column": 21,
      "kind": "string_literal",
      "text": "Invalid file",
      "context": "string literal",
      "line_content": "          showError('Invalid file', `${file.name}: only PDF and JPG are supported.`);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 85,
      "column": 26,
      "kind": "string_literal",
      "text": "Upload",
      "context": "string literal",
      "line_content": "          else showError('Upload', 'Could not get file ID from server.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 85,
      "column": 36,
      "kind": "string_literal",
      "text": "Could not get file ID from server.",
      "context": "string literal",
      "line_content": "          else showError('Upload', 'Could not get file ID from server.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 87,
      "column": 21,
      "kind": "string_literal",
      "text": "Upload failed",
      "context": "string literal",
      "line_content": "          showError('Upload failed', result.error || 'Unknown error');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 87,
      "column": 54,
      "kind": "string_literal",
      "text": "Unknown error",
      "context": "string literal",
      "line_content": "          showError('Upload failed', result.error || 'Unknown error');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 157,
      "column": 46,
      "kind": "string_literal",
      "text": "Step failed",
      "context": "string literal",
      "line_content": "          const errMsg = failedStep.error || 'Step failed';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 161,
      "column": 21,
      "kind": "string_literal",
      "text": "Pipeline error",
      "context": "string literal",
      "line_content": "          showError('Pipeline error', errMsg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 168,
      "column": 23,
      "kind": "string_literal",
      "text": "Pipeline completed",
      "context": "string literal",
      "line_content": "          showSuccess('Pipeline completed', 'Extraction and processing workflow finished successfully.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 168,
      "column": 45,
      "kind": "string_literal",
      "text": "Extraction and processing workflow finished successfully.",
      "context": "string literal",
      "line_content": "          showSuccess('Pipeline completed', 'Extraction and processing workflow finished successfully.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 178,
      "column": 93,
      "kind": "string_literal",
      "text": "Polling failed",
      "context": "string literal",
      "line_content": "        const msg = _parseErrorDetail(pollErr.response?.data?.detail) || pollErr.message || 'Polling failed';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 182,
      "column": 19,
      "kind": "string_literal",
      "text": "Polling error",
      "context": "string literal",
      "line_content": "        showError('Polling error', msg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 213,
      "column": 17,
      "kind": "string_literal",
      "text": "Missing data",
      "context": "string literal",
      "line_content": "      showError('Missing data', 'Please upload at least one PDF or JPG first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 213,
      "column": 33,
      "kind": "string_literal",
      "text": "Please upload at least one PDF or JPG first.",
      "context": "string literal",
      "line_content": "      showError('Missing data', 'Please upload at least one PDF or JPG first.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 219,
      "column": 24,
      "kind": "string_literal",
      "text": "Starting pipeline workflow...",
      "context": "string literal",
      "line_content": "    setPipelineSummary('Starting pipeline workflow...');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 233,
      "column": 30,
      "kind": "string_literal",
      "text": "Pipeline completed (synchronous execution).",
      "context": "string literal",
      "line_content": "          setPipelineSummary('Pipeline completed (synchronous execution).');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 234,
      "column": 36,
      "kind": "string_literal",
      "text": "Pipeline finished: Extract → Process → Sync.",
      "context": "string literal",
      "line_content": "          showSuccess('Completed', 'Pipeline finished: Extract → Process → Sync.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 236,
      "column": 52,
      "kind": "string_literal",
      "text": "Workflow executed but no run ID returned.",
      "context": "string literal",
      "line_content": "          throw new Error(response?.data?.error || 'Workflow executed but no run ID returned.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 242,
      "column": 32,
      "kind": "string_literal",
      "text": "Pipeline started: Extract → Process → Sync. You can follow progress in Workflows.",
      "context": "string literal",
      "line_content": "        showSuccess('Started', 'Pipeline started: Extract → Process → Sync. You can follow progress in Workflows.');"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 245,
      "column": 83,
      "kind": "string_literal",
      "text": "Failed to start workflow",
      "context": "string literal",
      "line_content": "      const msg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to start workflow';"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 248,
      "column": 17,
      "kind": "string_literal",
      "text": "Error",
      "context": "string literal",
      "line_content": "      showError('Error', msg);"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 257,
      "column": 12,
      "kind": "jsx_text",
      "text": "File upload is not available in this context.",
      "context": "between tags, user-visible text node",
      "line_content": "        <p>File upload is not available in this context.</p>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 265,
      "column": 45,
      "kind": "jsx_text",
      "text": "Scan / Upload",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.sectionTitle}>Scan / Upload</h3>"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 272,
      "column": 21,
      "kind": "jsx_text",
      "text": "Pipeline status:",
      "context": "between tags, user-visible text node",
      "line_content": "            <strong>Pipeline status:</strong> {pipelineState}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 308,
      "column": 26,
      "kind": "string_literal",
      "text": "Choose files",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              aria-label=\"Choose files\""
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 310,
      "column": 45,
      "kind": "string_literal",
      "text": "Choose files",
      "context": "string literal",
      "line_content": "            {uploadingFile ? 'Uploading…' : 'Choose files'}"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 320,
      "column": 26,
      "kind": "string_literal",
      "text": "Take photo",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "              aria-label=\"Take photo\""
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 341,
      "column": 35,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "                    borderBottom: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 364,
      "column": 21,
      "kind": "string_literal",
      "text": "Pipeline running...",
      "context": "string literal",
      "line_content": "                  ? 'Pipeline running...'"
    },
    {
      "file": "src/pages/views/trustee/TrusteeScanUploadView.tsx",
      "line": 365,
      "column": 21,
      "kind": "string_literal",
      "text": "Start pipeline",
      "context": "string literal",
      "line_content": "                  : 'Start pipeline'}"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 63,
      "column": 17,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "              : '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 108,
      "column": 39,
      "kind": "string_literal",
      "text": "2px solid #ddd",
      "context": "string literal",
      "line_content": "                        borderBottom: '2px solid #ddd',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 120,
      "column": 39,
      "kind": "string_literal",
      "text": "1px solid #eee",
      "context": "string literal",
      "line_content": "                        borderBottom: '1px solid #eee',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 201,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--warning-color, #ff9800)",
      "context": "string literal",
      "line_content": "            border: '1px solid var(--warning-color, #ff9800)',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 246,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #ccc)",
      "context": "string literal",
      "line_content": "                border: '1px solid var(--border-color, #ccc)',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 262,
      "column": 19,
      "kind": "string_literal",
      "text": "1px solid var(--progress-border, #c8e6c9)",
      "context": "string literal",
      "line_content": "          border: '1px solid var(--progress-border, #c8e6c9)',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 354,
      "column": 17,
      "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/views/workspace/ChatStream.tsx",
      "line": 357,
      "column": 21,
      "kind": "string_literal",
      "text": "background 0.15s",
      "context": "string literal",
      "line_content": "        transition: 'background 0.15s',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 376,
      "column": 84,
      "kind": "string_literal",
      "text": "Download",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "      <span style={{ fontSize: 14, color: 'var(--primary-color, #F25843)' }} title=\"Download\">&#x2B07;</span>"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 451,
      "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/views/workspace/ChatStream.tsx",
      "line": 478,
      "column": 25,
      "kind": "string_literal",
      "text": "width 0.2s",
      "context": "string literal",
      "line_content": "            transition: 'width 0.2s',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 500,
      "column": 15,
      "kind": "string_literal",
      "text": "Stop",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "        title=\"Stop\""
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 530,
      "column": 23,
      "kind": "string_literal",
      "text": "Consolas, Monaco, \"Courier New\", monospace",
      "context": "string literal",
      "line_content": "          fontFamily: 'Consolas, Monaco, \"Courier New\", monospace',"
    },
    {
      "file": "src/pages/views/workspace/ChatStream.tsx",
      "line": 557,
      "column": 21,
      "kind": "string_literal",
      "text": "Consolas, Monaco, \"Courier New\", monospace",
      "context": "string literal",
      "line_content": "        fontFamily: 'Consolas, Monaco, \"Courier New\", monospace',"
    },
    {
      "file": "src/pages/views/workspace/FilePreview.tsx",
      "line": 72,
      "column": 23,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "        borderBottom: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/FilePreview.tsx",
      "line": 106,
      "column": 25,
      "kind": "string_literal",
      "text": "Consolas, Monaco, \"Courier New\", monospace",
      "context": "string literal",
      "line_content": "            fontFamily: 'Consolas, Monaco, \"Courier New\", monospace',"
    },
    {
      "file": "src/pages/views/workspace/FilePreview.tsx",
      "line": 135,
      "column": 17,
      "kind": "string_literal",
      "text": "File too large for inline preview",
      "context": "string literal",
      "line_content": "              ? 'File too large for inline preview'"
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 214,
      "column": 21,
      "kind": "string_literal",
      "text": "Chat, Prompt & Kontext",
      "context": "string literal",
      "line_content": "          fileName: 'Chat, Prompt & Kontext',"
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 366,
      "column": 51,
      "kind": "string_literal",
      "text": "2px solid var(--accent, #4f46e5)",
      "context": "string literal",
      "line_content": "                  selectedSource === src.fileId ? '2px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',"
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 366,
      "column": 88,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e5e7eb)",
      "context": "string literal",
      "line_content": "                  selectedSource === src.fileId ? '2px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',"
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 394,
      "column": 31,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #d1d5db)",
      "context": "string literal",
      "line_content": "                      border: '1px solid var(--border-color, #d1d5db)',"
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 423,
      "column": 30,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #f3f4f6)",
      "context": "string literal",
      "line_content": "                  borderTop: '1px solid var(--border-color, #f3f4f6)',"
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 437,
      "column": 25,
      "kind": "string_literal",
      "text": "Mapping löschen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                  title=\"Mapping löschen\""
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 450,
      "column": 15,
      "kind": "string_literal",
      "text": "Keine Mappings ohne Dateizuordnung.",
      "context": "string literal",
      "line_content": "            ? 'Keine Mappings ohne Dateizuordnung.'"
    },
    {
      "file": "src/pages/views/workspace/NeutralizationPanel.tsx",
      "line": 451,
      "column": 15,
      "kind": "string_literal",
      "text": "Keine gespeicherten Mappings für diese Datenquelle.",
      "context": "string literal",
      "line_content": "            : 'Keine gespeicherten Mappings für diese Datenquelle.'}"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 71,
      "column": 61,
      "kind": "string_literal",
      "text": "Zurueck zum Dashboard",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <button onClick={_goBack} style={_btnStyle} title=\"Zurueck zum Dashboard\">"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 80,
      "column": 68,
      "kind": "string_literal",
      "text": "Aktualisieren",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          <button onClick={editor.refresh} style={_btnStyle} title=\"Aktualisieren\">"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 106,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "          borderBottom: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 153,
      "column": 19,
      "kind": "jsx_text",
      "text": "Original: {formatBinaryDataSizeBytes(activeEdit.oldContent.length)}",
      "context": "between tags, user-visible text node",
      "line_content": "            <span>Original: {formatBinaryDataSizeBytes(activeEdit.oldContent.length)}</span>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 154,
      "column": 19,
      "kind": "jsx_text",
      "text": "Geaendert: {formatBinaryDataSizeBytes(activeEdit.newContent.length)}",
      "context": "between tags, user-visible text node",
      "line_content": "            <span>Geaendert: {formatBinaryDataSizeBytes(activeEdit.newContent.length)}</span>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 177,
      "column": 40,
      "kind": "string_literal",
      "text": "TextModel got disposed",
      "context": "string literal",
      "line_content": "// Safe DiffEditor wrapper -- prevents \"TextModel got disposed\" errors"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 239,
      "column": 32,
      "kind": "string_literal",
      "text": "2px solid var(--primary-color, #F25843)",
      "context": "string literal",
      "line_content": "      borderBottom: isActive ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceEditorPage.tsx",
      "line": 239,
      "column": 76,
      "kind": "string_literal",
      "text": "2px solid transparent",
      "context": "string literal",
      "line_content": "      borderBottom: isActive ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 50,
      "column": 32,
      "kind": "string_literal",
      "text": "Fehler beim Laden der Einstellungen",
      "context": "string literal",
      "line_content": "      setError(err?.message || 'Fehler beim Laden der Einstellungen');"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 67,
      "column": 18,
      "kind": "string_literal",
      "text": "Wert muss zwischen 1 und 100 liegen.",
      "context": "string literal",
      "line_content": "        setError('Wert muss zwischen 1 und 100 liegen.');"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 81,
      "column": 18,
      "kind": "string_literal",
      "text": "Einstellungen gespeichert.",
      "context": "string literal",
      "line_content": "      setSuccess('Einstellungen gespeichert.');"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 84,
      "column": 32,
      "kind": "string_literal",
      "text": "Fehler beim Speichern",
      "context": "string literal",
      "line_content": "      setError(err?.message || 'Fehler beim Speichern');"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 95,
      "column": 44,
      "kind": "jsx_text",
      "text": "Lade Einstellungen...",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div className={styles.loading}>Lade Einstellungen...</div>;"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 102,
      "column": 38,
      "kind": "jsx_text",
      "text": "Generelle Einstellungen",
      "context": "between tags, user-visible text node",
      "line_content": "      <h2 className={styles.heading}>Generelle Einstellungen</h2>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 130,
      "column": 23,
      "kind": "string_literal",
      "text": "Auf Standard zurücksetzen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "                title=\"Auf Standard zurücksetzen\""
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 139,
      "column": 18,
      "kind": "jsx_text",
      "text": "Ihr Override: {maxRoundsInfo.userOverride}.",
      "context": "between tags, user-visible text node",
      "line_content": "              <> Ihr Override: {maxRoundsInfo.userOverride}.</>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceGeneralSettings.tsx",
      "line": 151,
      "column": 36,
      "kind": "string_literal",
      "text": "Einstellungen speichern",
      "context": "string literal",
      "line_content": "        {saving ? 'Speichern...' : 'Einstellungen speichern'}"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 14,
      "column": 27,
      "kind": "string_literal",
      "text": "Deutsch",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'de-DE', label: 'Deutsch' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 15,
      "column": 27,
      "kind": "string_literal",
      "text": "English (US)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'en-US', label: 'English (US)' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 16,
      "column": 27,
      "kind": "string_literal",
      "text": "English (UK)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'en-GB', label: 'English (UK)' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 17,
      "column": 27,
      "kind": "string_literal",
      "text": "Francais",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'fr-FR', label: 'Francais' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 18,
      "column": 27,
      "kind": "string_literal",
      "text": "Italiano",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'it-IT', label: 'Italiano' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 19,
      "column": 27,
      "kind": "string_literal",
      "text": "Espanol",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'es-ES', label: 'Espanol' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 20,
      "column": 27,
      "kind": "string_literal",
      "text": "Portugues",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'pt-BR', label: 'Portugues' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 21,
      "column": 27,
      "kind": "string_literal",
      "text": "Nederlands",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'nl-NL', label: 'Nederlands' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 22,
      "column": 27,
      "kind": "string_literal",
      "text": "Polski",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'pl-PL', label: 'Polski' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 23,
      "column": 27,
      "kind": "string_literal",
      "text": "Russkij",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'ru-RU', label: 'Russkij' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 24,
      "column": 27,
      "kind": "string_literal",
      "text": "Japanese",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'ja-JP', label: 'Japanese' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 25,
      "column": 27,
      "kind": "string_literal",
      "text": "Chinese",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { code: 'zh-CN', label: 'Chinese' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 324,
      "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/pages/views/workspace/WorkspaceInput.tsx",
      "line": 327,
      "column": 33,
      "kind": "string_literal",
      "text": "2px dashed var(--primary-color, #F25843)",
      "context": "string literal",
      "line_content": "        outline: treeDropOver ? '2px dashed var(--primary-color, #F25843)' : 'none',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 329,
      "column": 21,
      "kind": "string_literal",
      "text": "background 0.15s, outline 0.15s",
      "context": "string literal",
      "line_content": "        transition: 'background 0.15s, outline 0.15s',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 342,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #f0f0f0)",
      "context": "string literal",
      "line_content": "          borderBottom: '1px solid var(--border-color, #f0f0f0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 381,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #f0f0f0)",
      "context": "string literal",
      "line_content": "          borderBottom: '1px solid var(--border-color, #f0f0f0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 471,
      "column": 19,
      "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/views/workspace/WorkspaceInput.tsx",
      "line": 473,
      "column": 22,
      "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/pages/views/workspace/WorkspaceInput.tsx",
      "line": 484,
      "column": 31,
      "kind": "string_literal",
      "text": "1px solid #f0f0f0",
      "context": "string literal",
      "line_content": "                borderBottom: '1px solid #f0f0f0',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 512,
      "column": 23,
      "kind": "string_literal",
      "text": "Type a message... Use @filename to reference files",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "          placeholder=\"Type a message... Use @filename to reference files\""
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 521,
      "column": 21,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #ccc)",
      "context": "string literal",
      "line_content": "            border: '1px solid var(--border-color, #ccc)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 533,
      "column": 17,
      "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/workspace/WorkspaceInput.tsx",
      "line": 551,
      "column": 21,
      "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/workspace/WorkspaceInput.tsx",
      "line": 600,
      "column": 46,
      "kind": "string_literal",
      "text": "2px solid #2e7d32",
      "context": "string literal",
      "line_content": "                        border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 600,
      "column": 68,
      "kind": "string_literal",
      "text": "2px solid #ccc",
      "context": "string literal",
      "line_content": "                        border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 634,
      "column": 50,
      "kind": "string_literal",
      "text": "2px solid #7b1fa2",
      "context": "string literal",
      "line_content": "                            border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 634,
      "column": 72,
      "kind": "string_literal",
      "text": "2px solid #ccc",
      "context": "string literal",
      "line_content": "                            border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 669,
      "column": 19,
      "kind": "string_literal",
      "text": "Sprache waehlen",
      "context": "jsx/html attribute (title|placeholder|aria-label|alt)",
      "line_content": "            title=\"Sprache waehlen\""
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 682,
      "column": 34,
      "kind": "string_literal",
      "text": "Aufnahme stoppen",
      "context": "string literal",
      "line_content": "            title={voiceActive ? 'Aufnahme stoppen' : 'Sprachaufnahme starten'}"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 682,
      "column": 55,
      "kind": "string_literal",
      "text": "Sprachaufnahme starten",
      "context": "string literal",
      "line_content": "            title={voiceActive ? 'Aufnahme stoppen' : 'Sprachaufnahme starten'}"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 724,
      "column": 37,
      "kind": "string_literal",
      "text": "Neutralisierung aktiv (klicken zum Deaktivieren)",
      "context": "string literal",
      "line_content": "          title={neutralizeActive ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 724,
      "column": 90,
      "kind": "string_literal",
      "text": "Neutralisierung aus (klicken zum Aktivieren)",
      "context": "string literal",
      "line_content": "          title={neutralizeActive ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceInput.tsx",
      "line": 731,
      "column": 25,
      "kind": "string_literal",
      "text": "all 0.15s",
      "context": "string literal",
      "line_content": "            transition: 'all 0.15s',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 223,
      "column": 28,
      "kind": "string_literal",
      "text": "2px solid var(--primary-color, #F25843)",
      "context": "string literal",
      "line_content": "    borderBottom: active ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 223,
      "column": 72,
      "kind": "string_literal",
      "text": "2px solid transparent",
      "context": "string literal",
      "line_content": "    borderBottom: active ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 310,
      "column": 24,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "          borderRight: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 356,
      "column": 27,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "            borderBottom: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 365,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #ddd)",
      "context": "string literal",
      "line_content": "                border: '1px solid var(--border-color, #ddd)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 379,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #ddd)",
      "context": "string literal",
      "line_content": "                border: '1px solid var(--border-color, #ddd)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 392,
      "column": 25,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #ddd)",
      "context": "string literal",
      "line_content": "                border: '1px solid var(--border-color, #ddd)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 465,
      "column": 23,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "          borderLeft: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 498,
      "column": 28,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "              borderRight: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspacePage.tsx",
      "line": 532,
      "column": 27,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "              borderLeft: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 28,
      "column": 15,
      "kind": "string_literal",
      "text": "Office (Text)",
      "context": "string literal",
      "line_content": "  office_doc: 'Office (Text)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 29,
      "column": 17,
      "kind": "string_literal",
      "text": "Office (Tabellen)",
      "context": "string literal",
      "line_content": "  office_sheet: 'Office (Tabellen)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 30,
      "column": 18,
      "kind": "string_literal",
      "text": "Office (Folien)",
      "context": "string literal",
      "line_content": "  office_slides: 'Office (Folien)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 87,
      "column": 49,
      "kind": "string_literal",
      "text": "Laden fehlgeschlagen",
      "context": "string literal",
      "line_content": "      setError(e instanceof Error ? e.message : 'Laden fehlgeschlagen');"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 150,
      "column": 44,
      "kind": "jsx_text",
      "text": "Indexierte Dokumente",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.kpiLabel}>Indexierte Dokumente</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 154,
      "column": 44,
      "kind": "jsx_text",
      "text": "Indexiertes Datenvolumen (geschätzt)",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.kpiLabel}>Indexiertes Datenvolumen (geschätzt)</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 158,
      "column": 44,
      "kind": "jsx_text",
      "text": "Inhalts-Fragmente (Chunks)",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.kpiLabel}>Inhalts-Fragmente (Chunks)</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 164,
      "column": 44,
      "kind": "jsx_text",
      "text": "Anteil Fragmente mit Embedding",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.kpiLabel}>Anteil Fragmente mit Embedding</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 168,
      "column": 44,
      "kind": "jsx_text",
      "text": "Beitragende Benutzer (Anzahl)",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.kpiLabel}>Beitragende Benutzer (Anzahl)</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 172,
      "column": 44,
      "kind": "jsx_text",
      "text": "Workflow-Entitäten (Cache)",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.kpiLabel}>Workflow-Entitäten (Cache)</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 178,
      "column": 43,
      "kind": "jsx_text",
      "text": "Neu indexierte Dokumente pro Tag (letzte Wochen)",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.chartTitle}>Neu indexierte Dokumente pro Tag (letzte Wochen)</h3>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 180,
      "column": 38,
      "kind": "jsx_text",
      "text": "Keine Zeitreihen-Daten für den gewählten Zeitraum.",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.meta}>Keine Zeitreihen-Daten für den gewählten Zeitraum.</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 196,
      "column": 45,
      "kind": "jsx_text",
      "text": "Dokumente nach Format-Kategorie",
      "context": "between tags, user-visible text node",
      "line_content": "          <h3 className={styles.chartTitle}>Dokumente nach Format-Kategorie</h3>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 198,
      "column": 40,
      "kind": "jsx_text",
      "text": "Keine Daten.",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.meta}>Keine Daten.</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 215,
      "column": 40,
      "kind": "jsx_text",
      "text": "Keine Daten.",
      "context": "between tags, user-visible text node",
      "line_content": "            <p className={styles.meta}>Keine Daten.</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 241,
      "column": 43,
      "kind": "jsx_text",
      "text": "Fragmente nach Inhaltstyp",
      "context": "between tags, user-visible text node",
      "line_content": "        <h3 className={styles.chartTitle}>Fragmente nach Inhaltstyp</h3>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 243,
      "column": 38,
      "kind": "jsx_text",
      "text": "Keine Chunk-Daten.",
      "context": "between tags, user-visible text node",
      "line_content": "          <p className={styles.meta}>Keine Chunk-Daten.</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceRagInsightsPage.tsx",
      "line": 258,
      "column": 36,
      "kind": "jsx_text",
      "text": "Stand (UTC): {stats.generatedAtUtc}",
      "context": "between tags, user-visible text node",
      "line_content": "        <p className={styles.meta}>Stand (UTC): {stats.generatedAtUtc}</p>"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceSettingsPage.tsx",
      "line": 5,
      "column": 64,
      "kind": "string_literal",
      "text": "Stimme & Sprache",
      "context": "string literal",
      "line_content": " * Voice settings are now in user-level settings (/settings -> \"Stimme & Sprache\")."
    },
    {
      "file": "src/pages/views/workspace/WorkspaceSettingsPage.tsx",
      "line": 16,
      "column": 28,
      "kind": "string_literal",
      "text": "Generelle Einstellungen",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'general', label: 'Generelle Einstellungen' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceSettingsPage.tsx",
      "line": 17,
      "column": 35,
      "kind": "string_literal",
      "text": "Neutralisierung (Workspace)",
      "context": "object property label: (e.g. table column)",
      "line_content": "  { key: 'neutralization', label: 'Neutralisierung (Workspace)' },"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceSettingsPage.tsx",
      "line": 37,
      "column": 23,
      "kind": "string_literal",
      "text": "1px solid var(--border-color, #e0e0e0)",
      "context": "string literal",
      "line_content": "        borderBottom: '1px solid var(--border-color, #e0e0e0)',"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceSettingsPage.tsx",
      "line": 49,
      "column": 19,
      "kind": "string_literal",
      "text": "2px solid var(--primary-color, #F25843)",
      "context": "string literal",
      "line_content": "                ? '2px solid var(--primary-color, #F25843)'"
    },
    {
      "file": "src/pages/views/workspace/WorkspaceSettingsPage.tsx",
      "line": 50,
      "column": 19,
      "kind": "string_literal",
      "text": "2px solid transparent",
      "context": "string literal",
      "line_content": "                : '2px solid transparent',"
    },
    {
      "file": "src/providers/auth/AuthProvider.tsx",
      "line": 89,
      "column": 19,
      "kind": "jsx_text",
      "text": "Loading authentication...",
      "context": "between tags, user-visible text node",
      "line_content": "      return <div>Loading authentication...</div>;"
    },
    {
      "file": "src/providers/auth/ProtectedRoute.tsx",
      "line": 109,
      "column": 17,
      "kind": "jsx_text",
      "text": "Checking authentication...",
      "context": "between tags, user-visible text node",
      "line_content": "    return <div>Checking authentication...</div>;"
    },
    {
      "file": "src/stores/featureStore.tsx",
      "line": 124,
      "column": 65,
      "kind": "string_literal",
      "text": "Failed to load features",
      "context": "string literal",
      "line_content": "      const errorMessage = err instanceof Error ? err.message : 'Failed to load features';"
    },
    {
      "file": "src/stores/featureStore.tsx",
      "line": 264,
      "column": 21,
      "kind": "string_literal",
      "text": "useFeatureStore must be used within a FeatureProvider",
      "context": "string literal",
      "line_content": "    throw new Error('useFeatureStore must be used within a FeatureProvider');"
    }
  ]
}
