frontend_nyla/scripts/i18n_missing_report.md
2026-04-08 22:29:35 +02:00

533 KiB
Raw Blame History

i18n: vermutlich noch ohne t()

Anzahl Einträge (heuristisch): 2146

Hinweis: Einige Treffer können falsch positiv sein (technische Strings). Vor apply prüfen.

src/components/AccessRules/AccessRulesEditor.tsx:86

  • Text: 'Regel löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Regel löschen"

src/components/AccessRules/AccessRulesEditor.tsx:140

  • Text: 'Delete'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.permissionLabel}>Delete</span>

src/components/AccessRules/AccessRulesEditor.tsx:204

  • Text: 'z.B. data.feature.trustee.TrusteePosition'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'z.B. data.feature.trustee.TrusteePosition';

src/components/AccessRules/AccessRulesEditor.tsx:206

  • Text: 'z.B. ui.feature.trustee.dashboard'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'z.B. ui.feature.trustee.dashboard';

src/components/AccessRules/AccessRulesEditor.tsx:208

  • Text: 'z.B. resource.feature.trustee.documents.create'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'z.B. resource.feature.trustee.documents.create';

src/components/AccessRules/AccessRulesEditor.tsx:220

  • Text: 'Objekt auswählen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Objekt auswählen</label>

src/components/AccessRules/AccessRulesEditor.tsx:226

  • Text: '← Aus Katalog wählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {useCustom ? '← Aus Katalog wählen' : 'Freie Eingabe →'}

src/components/AccessRules/AccessRulesEditor.tsx:226

  • Text: 'Freie Eingabe →'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {useCustom ? '← Aus Katalog wählen' : 'Freie Eingabe →'}

src/components/AccessRules/AccessRulesEditor.tsx:245

  • Text: '-- Global (alle Objekte) --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Global (alle Objekte) --</option>

src/components/AccessRules/AccessRulesEditor.tsx:280

  • Text: 'Eigene (m)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.matrixGroup}>Eigene (m)</div>

src/components/AccessRules/AccessRulesEditor.tsx:281

  • Text: 'Gruppe (g)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.matrixGroup}>Gruppe (g)</div>

src/components/AccessRules/AccessRulesEditor.tsx:282

  • Text: 'Alle (a)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.matrixGroup}>Alle (a)</div>

src/components/AccessRules/AccessRulesEditor.tsx:289

  • Text: 'Delete'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const labels = { create: 'Create', read: 'Read', update: 'Update', delete: 'Delete' };

src/components/AccessRules/AccessRulesEditor.tsx:372

  • Text: 'Keine Daten-Regeln definiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: case 'DATA': return 'Keine Daten-Regeln definiert';

src/components/AccessRules/AccessRulesEditor.tsx:373

  • Text: 'Keine UI-Regeln definiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: case 'UI': return 'Keine UI-Regeln definiert';

src/components/AccessRules/AccessRulesEditor.tsx:374

  • Text: 'Keine Ressourcen-Regeln definiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: case 'RESOURCE': return 'Keine Ressourcen-Regeln definiert';

src/components/AccessRules/AccessRulesEditor.tsx:392

  • Text: 'Tabellenansicht'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Tabellenansicht"

src/components/AccessRules/AccessRulesEditor.tsx:399

  • Text: 'Kartenansicht'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Kartenansicht"

src/components/AccessRules/AccessRulesEditor.tsx:430

  • Text: 'Neue Regel'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: Klicken Sie auf "Neue Regel" um eine Berechtigung hinzuzufügen.

src/components/AccessRules/AccessRulesEditor.tsx:480

  • Text: 'JSON muss ein Array sein'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('JSON muss ein Array sein');

src/components/AccessRules/AccessRulesEditor.tsx:605

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Speichern');

src/components/AccessRules/AccessRulesEditor.tsx:631

  • Text: 'Daten'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { id: 'DATA', label: 'Daten', icon: <FaTable />, count: groupedRules.DATA.length },

src/components/AccessRules/AccessRulesEditor.tsx:632

  • Text: 'UI'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { id: 'UI', label: 'UI', icon: <FaDesktop />, count: groupedRules.UI.length },

src/components/AccessRules/AccessRulesEditor.tsx:633

  • Text: 'Ressourcen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { id: 'RESOURCE', label: 'Ressourcen', icon: <FaServer />, count: groupedRules.RESOURCE.length },

src/components/AccessRules/AccessRulesEditor.tsx:634

  • Text: 'JSON'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { id: 'JSON', label: 'JSON', icon: <FaCode />, count: rules.length },

src/components/AccessRules/AccessRulesEditor.tsx:642

  • Text: 'Lade Berechtigungen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Berechtigungen...</span>

src/components/AccessRules/AccessRulesTable.tsx:112

  • Text: 'Sichtbar'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Sichtbar"

src/components/AccessRules/AccessRulesTable.tsx:166

  • Text: 'Regel löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Regel löschen"

src/components/AccessRules/AccessRulesTable.tsx:198

  • Text: 'Objekt (Dot-Notation)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th className={styles.colObject}>Objekt (Dot-Notation)</th>

src/components/AccessRules/AccessRulesTable.tsx:202

  • Text: 'Eigene (m)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th className={styles.colGroupHeader} colSpan={4}>Eigene (m)</th>

src/components/AccessRules/AccessRulesTable.tsx:203

  • Text: 'Gruppe (g)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th className={styles.colGroupHeader} colSpan={4}>Gruppe (g)</th>

src/components/AccessRules/AccessRulesTable.tsx:204

  • Text: 'Alle (a)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th className={styles.colGroupHeader} colSpan={4}>Alle (a)</th>

src/components/AccessRules/AccessRulesTable.tsx:213

  • Text: 'Create'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Create">C</th>

src/components/AccessRules/AccessRulesTable.tsx:214

  • Text: 'Read'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Read">R</th>

src/components/AccessRules/AccessRulesTable.tsx:215

  • Text: 'Update'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Update">U</th>

src/components/AccessRules/AccessRulesTable.tsx:216

  • Text: 'Delete'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Delete">D</th>

src/components/AccessRules/AccessRulesTable.tsx:217

  • Text: 'Create'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Create">C</th>

src/components/AccessRules/AccessRulesTable.tsx:218

  • Text: 'Read'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Read">R</th>

src/components/AccessRules/AccessRulesTable.tsx:219

  • Text: 'Update'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Update">U</th>

src/components/AccessRules/AccessRulesTable.tsx:220

  • Text: 'Delete'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Delete">D</th>

src/components/AccessRules/AccessRulesTable.tsx:221

  • Text: 'Create'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Create">C</th>

src/components/AccessRules/AccessRulesTable.tsx:222

  • Text: 'Read'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Read">R</th>

src/components/AccessRules/AccessRulesTable.tsx:223

  • Text: 'Update'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Update">U</th>

src/components/AccessRules/AccessRulesTable.tsx:224

  • Text: 'Delete'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <th title="Delete">D</th>

src/components/Chat/ChatInput.tsx:20

  • Text: 'Type a message...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder = 'Type a message...',

src/components/Chat/ChatInput.tsx:55

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: '1px solid var(--border-color, #e0e0e0)',

src/components/Chat/ChatInput.tsx:71

  • Text: '1px solid var(--border-color, #ddd)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ddd)',

src/components/Chat/ChatMessageList.tsx:34

  • Text: 'No messages yet.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage = 'No messages yet.',

src/components/ContentPreview/ContentPreview.tsx:64

  • Text: 'Invalid file ID'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Invalid file ID');

src/components/ContentPreview/ContentPreview.tsx:67

  • Text: 'Unknown Item'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (!fileName || fileName === 'Unknown Item') {

src/components/ContentPreview/ContentPreview.tsx:68

  • Text: 'File name not available'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('File name not available');

src/components/ContentPreview/ContentPreview.tsx:96

  • Text: 's text content but MIME type says PDF, we'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // If it's text content but MIME type says PDF, we'll handle it in renderPreview

src/components/ContentPreview/ContentPreview.tsx:98

  • Text: 'Failed to load preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(result.error || 'Failed to load preview');

src/components/ContentPreview/ContentPreview.tsx:101

  • Text: 'An unexpected error occurred while loading the preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('An unexpected error occurred while loading the preview');

src/components/ContentPreview/ContentPreview.tsx:171

  • Text: 'Failed to load PDF preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError={() => setError('Failed to load PDF preview')}

src/components/ContentPreview/ContentPreview.tsx:197

  • Text: 'JSON Preview (Fallback)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.jsonTitle}>JSON Preview (Fallback)</span>

src/components/ContentPreview/ContentPreview.tsx:199

  • Text: 'Raw content'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.jsonSize}>Raw content</span>

src/components/ContentPreview/ContentPreview.tsx:204

  • Text: 'No content available'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {previewContent || 'No content available'}

src/components/ContentPreview/ContentPreview.tsx:222

  • Text: 'Failed to load image preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError={() => setError('Failed to load image preview')}

src/components/ContentPreview/ContentPreview.tsx:233

  • Text: 'Failed to load HTML preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError={() => setError('Failed to load HTML preview')}

src/components/ContentPreview/ContentPreview.tsx:243

  • Text: 'Failed to load text preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError={() => setError('Failed to load text preview')}

src/components/ContentPreview/ContentPreview.tsx:260

  • Text: 'Failed to load PDF preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError={() => setError('Failed to load PDF preview')}

src/components/ContentPreview/ContentPreview.tsx:270

  • Text: 'Failed to load HTML preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError={() => setError('Failed to load HTML preview')}

src/components/ContentPreview/ContentPreview.tsx:282

  • Text: 'Preview not supported for this file type'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError={() => setError('Preview not supported for this file type')}

src/components/ContentPreview/UrlContentPreview.tsx:56

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: link.rel = 'noopener noreferrer';

src/components/ContentPreview/UrlContentPreview.tsx:82

  • 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.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 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.');

src/components/ContentPreview/UrlContentPreview.tsx:99

  • Text: 'PDF lädt langsam. Sie können es auch direkt herunterladen oder in einem neuen Tab öffnen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setWarning('PDF lädt langsam. Sie können es auch direkt herunterladen oder in einem neuen Tab öffnen.');

src/components/ContentPreview/UrlContentPreview.tsx:110

  • Text: 'PDF lädt langsam. Versuche alternative Anzeigemethode...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setWarning('PDF lädt langsam. Versuche alternative Anzeigemethode...');

src/components/ContentPreview/UrlContentPreview.tsx:114

  • Text: 'PDF lädt langsam. Bitte verwenden Sie den Download-Button oder öffnen Sie es in einem neuen Tab.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('PDF lädt langsam. Bitte verwenden Sie den Download-Button oder öffnen Sie es in einem neuen Tab.');

src/components/ContentPreview/UrlContentPreview.tsx:132

  • Text: 'Invalid URL'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Invalid URL');

src/components/ContentPreview/UrlContentPreview.tsx:161

  • Text: '1px solid var(--color-border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border, #e5e7eb)',

src/components/ContentPreview/UrlContentPreview.tsx:172

  • Text: '1px solid var(--color-border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border, #e5e7eb)',

src/components/ContentPreview/UrlContentPreview.tsx:270

  • Text: '1px solid var(--color-border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border, #e5e7eb)',

src/components/ContentPreview/UrlContentPreview.tsx:317

  • Text: 'Preview not supported for this file type. Please download the file to view it.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Preview not supported for this file type. Please download the file to view it.</p>

src/components/ContentPreview/renderers/JsonRenderer.tsx:342

  • Text: 'Error: Invalid nested data'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.jsonValue}>Error: Invalid nested data</span>

src/components/ContentPreview/renderers/JsonRenderer.tsx:482

  • Text: 'Raw Content'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: keys: ['Raw Content'],

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:65

  • Text: 'Failed to load PDF'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err instanceof Error ? err.message : 'Failed to load PDF');

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:115

  • Text: 'Failed to render PDF page'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err instanceof Error ? err.message : 'Failed to render PDF page');

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:131

  • Text: 'Fehler beim Laden der PDF: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Fehler beim Laden der PDF: {error}</p>

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:140

  • Text: 'PDF wird geladen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>PDF wird geladen...</p>

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:152

  • Text: '1px solid var(--color-border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border, #e5e7eb)',

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:197

  • Text: '1px solid var(--color-border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--color-border, #e5e7eb)',

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:213

  • Text: '1px solid var(--color-border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--color-border, #e5e7eb)',

src/components/ContentPreview/renderers/PdfJsRenderer.tsx:232

  • Text: '0 2px 8px rgba(0,0,0,0.1)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: boxShadow: '0 2px 8px rgba(0,0,0,0.1)',

src/components/ContentPreview/renderers/TextRenderer.tsx:19

  • Text: 'Text Preview'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.textTitle}>Text Preview</span>

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:59

  • Text: 'Jetzt ausführen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: buildInvocationsForPrimaryKind('manual', [], 'Jetzt ausführen');

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:203

  • Text: 'Keine Nodes im Workflow.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setExecuteResult({ success: false, error: 'Keine Nodes im Workflow.' });

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:228

  • Text: 'Keine Nodes zum Speichern.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setExecuteResult({ success: false, error: 'Keine Nodes zum Speichern.' });

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:238

  • Text: 'Workflow speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Workflow speichern',

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:239

  • Text: 'Neuer Workflow'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: defaultValue: 'Neuer Workflow',

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:240

  • Text: 'Name des Workflows'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: placeholder: 'Name des Workflows',

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:247

  • Text: 'Neuer Workflow'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: label: label.trim() || 'Neuer Workflow',

src/components/FlowEditor/editor/Automation2FlowEditor.tsx:596

  • Text: 'Lade Node-Typen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Lade Node-Typen...</p>

src/components/FlowEditor/editor/CanvasHeader.tsx:38

  • Text: 'Entwurf'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: draft: { label: 'Entwurf', color: 'var(--warning-color, #ffc107)' },

src/components/FlowEditor/editor/CanvasHeader.tsx:39

  • Text: 'Veröffentlicht'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: published: { label: 'Veröffentlicht', color: 'var(--success-color, #28a745)' },

src/components/FlowEditor/editor/CanvasHeader.tsx:40

  • Text: 'Archiviert'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: archived: { label: 'Archiviert', color: 'var(--text-secondary, #666)' },

src/components/FlowEditor/editor/CanvasHeader.tsx:116

  • Text: 'Meine Vorlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const SCOPE_LABELS: Record<string, string> = { user: 'Meine Vorlagen', instance: 'Instanz', mandate: 'Mandant' };

src/components/FlowEditor/editor/CanvasHeader.tsx:137

  • Text: 'Klicken zum Umbenennen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={onWorkflowRename ? 'Klicken zum Umbenennen' : undefined}

src/components/FlowEditor/editor/CanvasHeader.tsx:151

  • Text: 'Workflow-Konfiguration (Einstieg / Starts)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Workflow-Konfiguration (Einstieg / Starts)"

src/components/FlowEditor/editor/CanvasHeader.tsx:152

  • Text: 'Workflow-Konfiguration'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Workflow-Konfiguration"

src/components/FlowEditor/editor/CanvasHeader.tsx:170

  • Text: 'Neu aus Vorlage'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Neu aus Vorlage"

src/components/FlowEditor/editor/CanvasHeader.tsx:214

  • Text: 'Als Vorlage speichern'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Als Vorlage speichern"

src/components/FlowEditor/editor/CanvasHeader.tsx:242

  • Text: '— Workflow laden —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Workflow laden —</option>

src/components/FlowEditor/editor/CanvasHeader.tsx:268

  • Text: 'Workspace-Panel (Chats, Dateien, Quellen)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button type="button" className={styles.retryButton} onClick={onToggleChat} title="Workspace-Panel (Chats, Dateien, Quellen)">

src/components/FlowEditor/editor/CanvasHeader.tsx:285

  • Text: '— Aktuelle —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Aktuelle —</option>

src/components/FlowEditor/editor/CanvasHeader.tsx:310

  • Text: 'Version veröffentlichen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Version veröffentlichen"

src/components/FlowEditor/editor/CanvasHeader.tsx:323

  • Text: 'Veröffentlichung zurücknehmen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Veröffentlichung zurücknehmen"

src/components/FlowEditor/editor/CanvasHeader.tsx:336

  • Text: 'Version archivieren'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Version archivieren"

src/components/FlowEditor/editor/CanvasHeader.tsx:349

  • Text: 'Neuen Entwurf erstellen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Neuen Entwurf erstellen"

src/components/FlowEditor/editor/CanvasHeader.tsx:379

  • Text: '✓ Ausführung abgeschlossen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <>✓ Ausführung abgeschlossen.</>

src/components/FlowEditor/editor/CanvasHeader.tsx:382

  • Text: 'Workflows & Tasks'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: ⏸ Workflow pausiert. Öffne <strong>Workflows & Tasks</strong> in der Sidebar, um den

src/components/FlowEditor/editor/CanvasHeader.tsx:386

  • Text: "✗ {executeResult.error ?? 'Unbekannter Fehler'}"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <>✗ {executeResult.error ?? 'Unbekannter Fehler'}</>

src/components/FlowEditor/editor/CanvasHeader.tsx:386

  • Text: 'Unbekannter Fehler'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <>✗ {executeResult.error ?? 'Unbekannter Fehler'}</>

src/components/FlowEditor/editor/EditorChatPanel.tsx:137

  • Text: 'Request failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errText = event.content || 'Request failed';

src/components/FlowEditor/editor/EditorChatPanel.tsx:190

  • Text: 'Describe what you want to build. The AI will create and modify nodes on the canvas.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Describe what you want to build. The AI will create and modify nodes on the canvas."

src/components/FlowEditor/editor/EditorChatPanel.tsx:197

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/editor/EditorChatPanel.tsx:223

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: pendingFiles.length > 0 ? 'none' : '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/editor/EditorChatPanel.tsx:264

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: hasAttachments ? 'none' : '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/editor/EditorChatPanel.tsx:267

  • Text: '2px dashed var(--primary-color, #F25843)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: outline: treeDropOver ? '2px dashed var(--primary-color, #F25843)' : 'none',

src/components/FlowEditor/editor/EditorChatPanel.tsx:269

  • Text: 'background 0.15s, outline 0.15s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.15s, outline 0.15s',

src/components/FlowEditor/editor/EditorChatPanel.tsx:280

  • Text: 'Describe a change...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: placeholder={workflowId ? 'Describe a change...' : 'Save workflow first'}

src/components/FlowEditor/editor/EditorChatPanel.tsx:280

  • Text: 'Save workflow first'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: placeholder={workflowId ? 'Describe a change...' : 'Save workflow first'}

src/components/FlowEditor/editor/EditorChatPanel.tsx:285

  • Text: '1px solid var(--border-color, #ccc)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ccc)',

src/components/FlowEditor/editor/EditorChatPanel.tsx:297

  • Text: 'Datenquellen anhängen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Datenquellen anhängen"

src/components/FlowEditor/editor/EditorChatPanel.tsx:300

  • Text: '1px solid var(--border-color, #ddd)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ddd)',

src/components/FlowEditor/editor/EditorChatPanel.tsx:341

  • Text: '2px solid #2e7d32'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',

src/components/FlowEditor/editor/EditorChatPanel.tsx:341

  • Text: '2px solid #ccc'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',

src/components/FlowEditor/editor/EditorChatPanel.tsx:370

  • Text: '2px solid #7b1fa2'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',

src/components/FlowEditor/editor/EditorChatPanel.tsx:370

  • Text: '2px solid #ccc'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',

src/components/FlowEditor/editor/FlowCanvas.tsx:511

  • Text: 'Delete'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (e.key === 'Delete' || e.key === 'Backspace') {

src/components/FlowEditor/editor/FlowCanvas.tsx:596

  • Text: '0 0, 10 3.5, 0 7'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <polygon points="0 0, 10 3.5, 0 7" fill="var(--text-secondary, #666)" />

src/components/FlowEditor/editor/FlowCanvas.tsx:606

  • Text: '0 0, 10 3.5, 0 7'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <polygon points="0 0, 10 3.5, 0 7" fill="var(--primary-color, #007bff)" />

src/components/FlowEditor/editor/FlowCanvas.tsx:616

  • Text: '0 0, 10 3.5, 0 7'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <polygon points="0 0, 10 3.5, 0 7" fill="#FF9800" />

src/components/FlowEditor/editor/FlowCanvas.tsx:641

  • Text: 'Verbindung auswählen (Entf zum Löschen, klicken Sie auf einen anderen Eingang zum Umleiten)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Verbindung auswählen (Entf zum Löschen, klicken Sie auf einen anderen Eingang zum Umleiten)"

src/components/FlowEditor/editor/FlowCanvas.tsx:660

  • Text: 'Type mismatch warning: output type may not match input type'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <title>Type mismatch warning: output type may not match input type</title>

src/components/FlowEditor/editor/FlowCanvas.tsx:759

  • Text: 'Aktuelles Ziel klicken zum Abwählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Aktuelles Ziel klicken zum Abwählen'

src/components/FlowEditor/editor/FlowCanvas.tsx:760

  • Text: 'Klicken zum Umleiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Klicken zum Umleiten'

src/components/FlowEditor/editor/FlowCanvas.tsx:839

  • Text: 'Nodes aus der Liste links hierher ziehen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Nodes aus der Liste links hierher ziehen.</p>

src/components/FlowEditor/editor/NodeConfigPanel.tsx:89

  • Text: 'z.B. Kundenformular, Prüfen Land'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z.B. Kundenformular, Prüfen Land"

src/components/FlowEditor/editor/NodeSidebar.tsx:89

  • Text: 'Nodes durchsuchen...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Nodes durchsuchen..."

src/components/FlowEditor/editor/RunTracingPanel.tsx:220

  • Text: 'Retry count'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <span style={{ color: '#f0ad4e', fontSize: '11px' }} title="Retry count">

src/components/FlowEditor/editor/TemplatePicker.tsx:132

  • Text: 'Übernehmen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {copying === tpl.id ? <FaSpinner className={styles.spinner} /> : 'Übernehmen'}

src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx:15

  • Text: 'Manueller Trigger'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'manual', label: 'Manueller Trigger' },

src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx:16

  • Text: 'Formular'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'form', label: 'Formular' },

src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx:17

  • Text: 'Zeitplan'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'schedule', label: 'Zeitplan' },

src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx:18

  • Text: 'Immer aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'always_on', label: 'Immer aktiv' },

src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx:85

  • Text: 'z. B. Angebot anlegen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z. B. Angebot anlegen"

src/components/FlowEditor/editor/WorkflowConfigurationModal.tsx:88

  • Text: 'Einstiegsart'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <div className={styles.workflowModalRadioGroup} role="radiogroup" aria-label="Einstiegsart">

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:11

  • Text: 'Prompt'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: 'ai.prompt': [{ label: 'Prompt', key: 'prompt', type: 'textarea' }],

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:12

  • Text: 'Query'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: 'ai.webResearch': [{ label: 'Query', key: 'query', type: 'dynamic' }],

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:14

  • Text: 'Summary length'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { label: 'Summary length', key: 'summaryLength', type: 'select', options: ['short', 'medium', 'long'] },

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:16

  • Text: 'Target language'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: 'ai.translateDocument': [{ label: 'Target language', key: 'targetLanguage', type: 'input' }],

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:18

  • Text: 'Target format'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { label: 'Target format', key: 'targetFormat', type: 'select', options: ['pdf', 'docx', 'txt', 'md'] },

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:20

  • Text: 'Prompt'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: 'ai.generateDocument': [{ label: 'Prompt', key: 'prompt', type: 'dynamic' }],

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:22

  • Text: 'Prompt'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { label: 'Prompt', key: 'prompt', type: 'dynamic' },

src/components/FlowEditor/nodes/configs/AiNodeConfig.tsx:23

  • Text: 'Language'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { label: 'Language', key: 'language', type: 'select', options: ['python', 'javascript', 'typescript', 'sql'] },

src/components/FlowEditor/nodes/configs/ApprovalNodeConfig.tsx:15

  • Text: 'Genehmigungstitel'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Genehmigungstitel"

src/components/FlowEditor/nodes/configs/ApprovalNodeConfig.tsx:23

  • Text: 'Was genehmigt werden soll'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Was genehmigt werden soll"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:84

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:103

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:111

  • Text: 'Liste wählen (Ordner bis /team/…/list/…)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Liste wählen (Ordner bis /team/…/list/…)';

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:115

  • Text: 'Aufgabe wählen (Pfad …/task/…)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Aufgabe wählen (Pfad …/task/…)';

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:117

  • Text: 'ClickUp durchsuchen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'ClickUp durchsuchen';

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:378

  • Text: 'Aufgaben konnten nicht geladen werden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setLoadError('Aufgaben konnten nicht geladen werden.');

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:402

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="— Quelle wählen —"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:403

  • Text: 'Statisch (Aufgabe wählen)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: staticLabel="Statisch (Aufgabe wählen)"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:422

  • Text: '— Aufgabe wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Aufgabe wählen —</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:542

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="— Quelle wählen —"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:555

  • Text: '— Option wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Option wählen —</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:577

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="— Quelle wählen —"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:613

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="— Quelle wählen —"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:638

  • Text: 'z. B. 1234.56'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: placeholder={ft === 'currency' ? 'z. B. 1234.56' : undefined}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:688

  • Text: 'Fälligkeit'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Fälligkeit</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:694

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="— Quelle wählen —"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:734

  • Text: 'Zeitschätzung (Stunden)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Zeitschätzung (Stunden)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:740

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="— Quelle wählen —"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:782

  • Text: 'Titel (name)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'name', label: 'Titel (name)' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:783

  • Text: 'Beschreibung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'description', label: 'Beschreibung' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:784

  • Text: 'Status'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'status', label: 'Status' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:785

  • Text: 'Priorität (14)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'priority', label: 'Priorität (14)' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:786

  • Text: 'Fälligkeit (Datum oder ms)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'due_date', label: 'Fälligkeit (Datum oder ms)' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:787

  • Text: 'Zeitschätzung (Stunden)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'time_estimate_h', label: 'Zeitschätzung (Stunden)' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:788

  • Text: 'Zeitschätzung (ms)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'time_estimate_ms', label: 'Zeitschätzung (ms)' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:789

  • Text: 'Zugewiesene'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'assignees', label: 'Zugewiesene' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:790

  • Text: 'Benutzerdefiniertes Feld'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'custom_field', label: 'Benutzerdefiniertes Feld' },

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:852

  • Text: 'Aufgaben konnten nicht geladen werden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setErr('Aufgaben konnten nicht geladen werden.');

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:867

  • Text: 'Vorhandene Aufgabe in der gewählten Liste'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Vorhandene Aufgabe in der gewählten Liste</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:882

  • Text: '— Aufgabe aus ClickUp wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Aufgabe aus ClickUp wählen —</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1047

  • Text: 'Oder Referenz (ohne Formular-Payload)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: label="Oder Referenz (ohne Formular-Payload)"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1064

  • Text: 'Feld-ID'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Feld-ID"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1068

  • Text: 'Neuer Wert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: label="Neuer Wert"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1072

  • Text: 'Wert'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Wert"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1083

  • Text: 'Status (Referenz)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: label="Status (Referenz)"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1086

  • Text: 'Kontext mit Status-String'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Kontext mit Status-String"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1097

  • Text: 'Status (wie in ClickUp)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Status (wie in ClickUp)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1099

  • Text: 'Status werden geladen…'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">Status werden geladen…</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1106

  • Text: 'Status (wie in ClickUp)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Status (wie in ClickUp)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1114

  • Text: '— Keine Status geladen —'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? '— Keine Status geladen —'

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1115

  • Text: '— Status wählen —'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : '— Status wählen —'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1147

  • Text: 'Priorität'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Priorität</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1152

  • Text: '— wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— wählen —</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1153

  • Text: '1 — Dringend'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="1">1 — Dringend</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1154

  • Text: '2 — Hoch'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="2">2 — Hoch</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1155

  • Text: '3 — Normal'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="3">3 — Normal</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1156

  • Text: '4 — Niedrig'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="4">4 — Niedrig</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1169

  • Text: 'Alternativ nur Referenz'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {commonHybrid(false, 'Alternativ nur Referenz')}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1181

  • Text: 'Alternativ: Referenz (Stunden)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {commonHybrid(false, 'Alternativ: Referenz (Stunden)')}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1206

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1234

  • Text: '[123,456] oder JSON-Array'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {commonHybrid(false, '[123,456] oder JSON-Array')}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1246

  • Text: 'Beschreibung'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Beschreibung"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1258

  • Text: 'Titel'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Titel"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1280

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1654

  • Text: 'Connection (ClickUp)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Connection (ClickUp)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1660

  • Text: 'Loading...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1660

  • Text: 'Select connection'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1683

  • Text: 'Workspaces werden geladen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1683

  • Text: 'Workspace wählen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1693

  • Text: 'Liste (Tabelle)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Liste (Tabelle)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1701

  • Text: 'Listen werden geladen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Listen werden geladen…'

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1703

  • Text: 'Alle Listen im Workspace'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Alle Listen im Workspace'

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1704

  • Text: 'Zuerst Workspace wählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Zuerst Workspace wählen'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1718

  • Text: 'Stichwort für die Aufgabensuche'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Stichwort für die Aufgabensuche"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1726

  • Text: 'Seite (Pagination)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Seite (Pagination)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1754

  • Text: 'Erledigte Aufgaben einbeziehen (Listen-Suche)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Erledigte Aufgaben einbeziehen (Listen-Suche)</span>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1793

  • Text: 'Workspaces werden geladen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1793

  • Text: 'Workspace wählen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1819

  • Text: 'Listen werden geladen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1819

  • Text: 'Liste wählen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1835

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1854

  • Text: 'Bei Listenwahl automatisch abgleichen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Bei Listenwahl automatisch abgleichen</span>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1898

  • Text: '— Standard (ClickUp) —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Standard (ClickUp) —</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1909

  • Text: 'Priorität'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Priorität</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1914

  • Text: '— keine —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— keine —</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1915

  • Text: '1 — Dringend'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="1">1 — Dringend</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1916

  • Text: '2 — Hoch'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="2">2 — Hoch</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1917

  • Text: '3 — Normal'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="3">3 — Normal</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1918

  • Text: '4 — Niedrig'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="4">4 — Niedrig</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:1940

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2013

  • Text: 'Zusätzliche Felder (JSON)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Zusätzliche Felder (JSON)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2018

  • Text: '{"priority": "3"}'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder='{"priority": "3"}'

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2028

  • Text: 'List path'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>List path</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2032

  • Text: '/team/{teamId}/list/{listId}'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="/team/{teamId}/list/{listId}"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2069

  • Text: 'Referenz: voriger Knoten „Aufgabe erstellen“ → taskId'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Referenz: voriger Knoten „Aufgabe erstellen“ → taskId"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2073

  • Text: 'Path (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Path (optional)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2077

  • Text: '.../task/{taskId}'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=".../task/{taskId}"

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2090

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2122

  • Text: 'Workspaces werden geladen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2122

  • Text: 'Workspace wählen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchTeamsLoading ? 'Workspaces werden geladen…' : 'Workspace wählen…'}

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2146

  • Text: 'Listen werden geladen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2146

  • Text: 'Liste wählen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{searchListsLoading ? 'Listen werden geladen…' : 'Liste wählen…'}</option>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2177

  • Text: 'taskUpdate (JSON)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>taskUpdate (JSON)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2182

  • Text: '{"name": "…"} — Basis; Zeilen darüber setzen/überschreiben Felder'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder='{"name": "…"} — Basis; Zeilen darüber setzen/überschreiben Felder'

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2191

  • Text: 'File name (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>File name (optional)</label>

src/components/FlowEditor/nodes/configs/ClickUpNodeConfig.tsx:2195

  • Text: 'report.pdf'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="report.pdf"

src/components/FlowEditor/nodes/configs/CommentNodeConfig.tsx:15

  • Text: 'Kommentar eingeben...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Kommentar eingeben..."

src/components/FlowEditor/nodes/configs/ConfirmationNodeConfig.tsx:15

  • Text: 'Möchten Sie bestätigen?'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Möchten Sie bestätigen?"

src/components/FlowEditor/nodes/configs/ConfirmationNodeConfig.tsx:19

  • Text: 'Bestätigen-Button'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Bestätigen-Button</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:60

  • Text: 'Loading...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{loading ? 'Loading...' : 'Select connection'}</option>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:60

  • Text: 'Select connection'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{loading ? 'Loading...' : 'Select connection'}</option>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:77

  • Text: 'Loading folders...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {foldersLoading ? 'Loading folders...' : !connectionId ? 'Select account first' : 'Select folder'}

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:77

  • Text: 'Select account first'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {foldersLoading ? 'Loading folders...' : !connectionId ? 'Select account first' : 'Select folder'}

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:77

  • Text: 'Select folder'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {foldersLoading ? 'Loading folders...' : !connectionId ? 'Select account first' : 'Select folder'}

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:95

  • Text: 'Sent Items'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="SentItems">Sent Items</option>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:96

  • Text: 'Deleted Items'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="DeletedItems">Deleted Items</option>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:97

  • Text: 'Junk Email'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="JunkEmail">Junk Email</option>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:114

  • Text: 'Search query (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Search query (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:118

  • Text: 'General search term (subject, body, from)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="General search term (subject, body, from)"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:122

  • Text: 'From address (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>From address (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:126

  • Text: 'e.g. sender@example.com'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="e.g. sender@example.com"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:130

  • Text: 'To address (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>To address (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:134

  • Text: 'e.g. recipient@example.com'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="e.g. recipient@example.com"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:138

  • Text: 'Subject contains (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Subject contains (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:142

  • Text: 'Word or phrase in subject'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Word or phrase in subject"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:146

  • Text: 'Body/content contains (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Body/content contains (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:150

  • Text: 'Word or phrase in email body'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Word or phrase in email body"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:160

  • Text: 'Only emails with attachment'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label htmlFor="searchHasAttachment">Only emails with attachment</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:175

  • Text: 'From address (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>From address (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:179

  • Text: 'e.g. sender@example.com'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="e.g. sender@example.com"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:183

  • Text: 'Subject contains (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Subject contains (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:187

  • Text: 'Word or phrase in subject'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Word or phrase in subject"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:197

  • Text: 'Only emails with attachment'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label htmlFor="hasAttachment">Only emails with attachment</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:216

  • Text: 'Email subject (or leave empty if connected to AI node above)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Email subject (or leave empty if connected to AI node above)"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:224

  • Text: 'Email body (or leave empty if connected to AI node above)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Email body (or leave empty if connected to AI node above)"

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:229

  • Text: 'To (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>To (optional)</label>

src/components/FlowEditor/nodes/configs/EmailNodeConfig.tsx:233

  • Text: 'Recipient(s) (or from AI when connected)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Recipient(s) (or from AI when connected)"

src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx:44

  • Text: 'Inhalte (welche Kontexte nacheinander in die Datei?)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Inhalte (welche Kontexte nacheinander in die Datei?)</label>

src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx:50

  • Text: 'Quelle wählen…'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Quelle wählen…"

src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx:56

  • Text: 'Entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Entfernen"

src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx:57

  • Text: 'Inhalt entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Inhalt entfernen"

src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx:90

  • Text: 'Dokumenttitel'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Dokumenttitel"

src/components/FlowEditor/nodes/configs/FileCreateNodeConfig.tsx:94

  • Text: 'Vorlage / Stil'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Vorlage / Stil</label>

src/components/FlowEditor/nodes/configs/ReviewNodeConfig.tsx:16

  • Text: '{{nodeId.field}}'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="{{nodeId.field}}"

src/components/FlowEditor/nodes/configs/SelectionNodeConfig.tsx:16

  • Text: 'value'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="value"

src/components/FlowEditor/nodes/configs/SelectionNodeConfig.tsx:25

  • Text: 'label'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="label"

src/components/FlowEditor/nodes/configs/SelectionNodeConfig.tsx:35

  • Text: ''
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: <button type="button" onClick={() => updateParam('options', [...options, { value: '', label: '' }])}>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:15

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:34

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: '1px solid var(--border-color, #e0e0e0)',

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:42

  • Text: 'Zielordner durchsuchen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Zielordner durchsuchen';

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:44

  • Text: 'Ordner durchsuchen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Ordner durchsuchen';

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:46

  • Text: 'Datei auswählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Datei auswählen';

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:48

  • Text: 'Datei auswählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Datei auswählen';

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:50

  • Text: 'Pfad aus Bibliothek wählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Pfad aus Bibliothek wählen';

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:52

  • Text: 'SharePoint durchsuchen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'SharePoint durchsuchen';

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:156

  • Text: 'Loading...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:156

  • Text: 'Select connection'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{connectionsLoading ? 'Loading...' : 'Select connection'}</option>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:167

  • Text: 'Search query / path'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Search query / path</label>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:171

  • Text: '/sites/SiteName/Shared Documents or search term'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="/sites/SiteName/Shared Documents or search term"

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:178

  • Text: 'Folder path'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Folder path</label>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:182

  • Text: '/ or /sites/SiteName/Shared Documents/Folder'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="/ or /sites/SiteName/Shared Documents/Folder"

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:191

  • Text: 'Target folder path'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Target folder path'

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:193

  • Text: 'File path'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'File path'

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:204

  • Text: 'File path'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'File path'

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:212

  • Text: 'Site ID'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Site ID</label>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:216

  • Text: 'SharePoint site ID'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="SharePoint site ID"

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:224

  • Text: 'Source file'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Source file</label>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:228

  • Text: '/sites/.../folder/file.pdf'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="/sites/.../folder/file.pdf"

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:232

  • Text: 'Destination folder'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Destination folder</label>

src/components/FlowEditor/nodes/configs/SharePointNodeConfig.tsx:236

  • Text: '/sites/.../target-folder/'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="/sites/.../target-folder/"

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:35

  • Text: 'Trustee Instance ID'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Trustee Instance ID</label>

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:39

  • Text: 'Trustee Feature-Instanz-ID'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Trustee Feature-Instanz-ID"

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:46

  • Text: 'SharePoint Connection (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>SharePoint Connection (optional)</label>

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:52

  • Text: 'Keine (Dateien aus vorherigem Schritt)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{loading ? 'Laden...' : 'Keine (Dateien aus vorherigem Schritt)'}</option>

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:61

  • Text: 'SharePoint Ordnerpfad (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>SharePoint Ordnerpfad (optional)</label>

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:65

  • Text: '/sites/MySite/Documents/Expenses'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="/sites/MySite/Documents/Expenses"

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:69

  • Text: 'AI Prompt (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>AI Prompt (optional)</label>

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:73

  • Text: 'Zusätzliche Anweisungen für die AI-Extraktion'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Zusätzliche Anweisungen für die AI-Extraktion"

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:82

  • Text: 'Document List (Referenz)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Document List (Referenz)</label>

src/components/FlowEditor/nodes/configs/TrusteeNodeConfig.tsx:86

  • Text: 'Referenz auf vorherigen Schritt (automatisch verknüpft)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Referenz auf vorherigen Schritt (automatisch verknüpft)"

src/components/FlowEditor/nodes/configs/UploadNodeConfig.tsx:40

  • Text: 'Erlaubte Dateitypen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Erlaubte Dateitypen</label>

src/components/FlowEditor/nodes/configs/UploadNodeConfig.tsx:58

  • Text: 'Max. Größe (MB)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Max. Größe (MB)</label>

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:77

  • Text: 'Zum Verschieben ziehen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Zum Verschieben ziehen"

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:88

  • Text: 'name'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="name"

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:97

  • Text: 'label'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="label"

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:134

  • Text: 'ClickUp-Aufgabe (Referenz)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="clickup_tasks">ClickUp-Aufgabe (Referenz)</option>

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:135

  • Text: 'ClickUp-Status (Liste)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="clickup_status">ClickUp-Status (Liste)</option>

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:152

  • Text: 'Feld entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Feld entfernen"

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:188

  • Text: 'Verbindung wählen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <option value="">{connectionsLoading ? 'Lade…' : 'Verbindung wählen…'}</option>

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:199

  • Text: 'z. B. aus ClickUp-URL …/list/123456789'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z. B. aus ClickUp-URL …/list/123456789"

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:210

  • Text: '{ add: [taskId], rem: [] }'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <code>{'{ add: [taskId], rem: [] }'}</code> — im ClickUp-Node per Datenquelle auf das

src/components/FlowEditor/nodes/form/FormNodeConfig.tsx:220

  • Text: ''
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: updateParam('fields', [...fields, { name: '', type: 'string', label: '', required: false }])

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:170

  • Text: '— Select connection —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Select connection —</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:214

  • Text: 'not equals'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="neq">not equals</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:216

  • Text: 'greater than'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="gt">greater than</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:217

  • Text: 'less than'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="lt">less than</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:230

  • Text: ''
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: const addField = () => onChange([...fields, { name: '', type: 'text', label: '', required: false }]);

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:242

  • Text: 'Name'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:248

  • Text: 'Select'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="select">Select</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:251

  • Text: 'Label'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:277

  • Text: 'Key'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:278

  • Text: 'Value'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:294

  • Text: '*/5 * * * *'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="*/5 * * * *"

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:310

  • Text: 'not equals'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="neq">not equals</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:311

  • Text: 'greater than'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="gt">greater than</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:312

  • Text: 'less than'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="lt">less than</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:314

  • Text: 'is empty'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="empty">is empty</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:315

  • Text: 'is not empty'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="not_empty">is not empty</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:316

  • Text: 'is true'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="is_true">is true</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:317

  • Text: 'is false'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="is_false">is false</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:319

  • Text: 'Value'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:339

  • Text: 'Source field'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:341

  • Text: 'Output field'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:357

  • Text: 'Field'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:360

  • Text: 'not equals'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="neq">not equals</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:362

  • Text: 'starts with'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="startsWith">starts with</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:363

  • Text: 'is empty'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="isEmpty">is empty</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:364

  • Text: 'is not empty'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="isNotEmpty">is not empty</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:365

  • Text: 'greater than'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="gt">greater than</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:366

  • Text: 'less than'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="lt">less than</option>

src/components/FlowEditor/nodes/frontendTypeRenderers/index.tsx:368

  • Text: 'Value'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <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' }} />

src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx:49

  • Text: 'input.upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: isMimeTypeRef && sourceNode?.type === 'input.upload' && sourceNode.parameters

src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx:100

  • Text: 'Formular-Feld wählen…'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <RefSourceSelect value={ref} onChange={handleRefChange} placeholder="Formular-Feld wählen…" />

src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx:120

  • Text: '— MIME-Type wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— MIME-Type wählen —</option>

src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx:142

  • Text: 'z.B. application/pdf'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'z.B. application/pdf'

src/components/FlowEditor/nodes/ifElse/IfElseNodeConfig.tsx:143

  • Text: 'z.B. CH'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'z.B. CH'

src/components/FlowEditor/nodes/shared/DataPicker.tsx:47

  • Text: '(ganze Ausgabe)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const pathLabel = basePath.length ? basePath.map(String).join(' → ') : '(ganze Ausgabe)';

src/components/FlowEditor/nodes/shared/DataPicker.tsx:141

  • Text: 'Datenquelle wählen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4 className={styles.dataPickerTitle}>Datenquelle wählen</h4>

src/components/FlowEditor/nodes/shared/DataPicker.tsx:142

  • Text: 'Schließen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button type="button" className={styles.dataPickerClose} onClick={onClose} aria-label="Schließen">

src/components/FlowEditor/nodes/shared/DataPicker.tsx:183

  • Text: 'Keine vorherigen Nodes verfügbar.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <p className={styles.dataPickerEmpty}>Keine vorherigen Nodes verfügbar.</p>;

src/components/FlowEditor/nodes/shared/DynamicValueField.tsx:58

  • Text: 'Keine vorherigen Nodes verfügbar.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.dynamicValueEmptyHint}>Keine vorherigen Nodes verfügbar.</p>

src/components/FlowEditor/nodes/shared/HybridStaticRefField.tsx:86

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="— Quelle wählen —"

src/components/FlowEditor/nodes/shared/LoopItemsSelect.tsx:71

  • Text: 'input.upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (node?.type === 'input.upload') {

src/components/FlowEditor/nodes/shared/LoopItemsSelect.tsx:159

  • Text: 'Über was soll iteriert werden?'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder = 'Über was soll iteriert werden?',

src/components/FlowEditor/nodes/shared/LoopItemsSelect.tsx:185

  • Text: 'Datenquelle für Iteration'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Datenquelle für Iteration</label>

src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx:109

  • Text: 'input.upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (node.type === 'input.upload') {

src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx:193

  • Text: '— Quelle wählen —'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder = '— Quelle wählen —',

src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx:270

  • Text: 'Datenquelle wählen…'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder = 'Datenquelle wählen…',

src/components/FlowEditor/nodes/shared/RefSourceSelect.tsx:360

  • Text: 'input.upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (node.type === 'input.upload') {

src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx:20

  • Text: 'Feld 1'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: if (!Array.isArray(raw)) return [{ name: 'field1', label: 'Feld 1', type: 'text' }];

src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx:62

  • Text: 'Name (Payload-Key)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Name (Payload-Key)"

src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx:72

  • Text: 'Beschriftung'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Beschriftung"

src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx:99

  • Text: 'ClickUp-Status (Liste)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="clickup_status">ClickUp-Status (Liste)</option>

src/components/FlowEditor/nodes/start/FormStartNodeConfig.tsx:114

  • Text: 'Neues Feld'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: setFields([...fields, { name:field${fields.length + 1}, label: 'Neues Feld', type: 'text' }])

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:20

  • Text: 'Täglich'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'daily', title: 'Täglich', subtitle: 'Jeden Tag zur gleichen Zeit' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:20

  • Text: 'Jeden Tag zur gleichen Zeit'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'daily', title: 'Täglich', subtitle: 'Jeden Tag zur gleichen Zeit' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:21

  • Text: 'Montag bis Freitag'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'weekdays', title: 'Werktage', subtitle: 'Montag bis Freitag' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:22

  • Text: 'Bestimmte Tage'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'weekly', title: 'Bestimmte Tage', subtitle: 'Wochentage auswählen' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:22

  • Text: 'Wochentage auswählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'weekly', title: 'Bestimmte Tage', subtitle: 'Wochentage auswählen' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:23

  • Text: 'Ein anderer Zeitraum'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'calendar', title: 'Ein anderer Zeitraum', subtitle: 'Monatlich oder jährlich wiederkehrend' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:23

  • Text: 'Monatlich oder jährlich wiederkehrend'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'calendar', title: 'Ein anderer Zeitraum', subtitle: 'Monatlich oder jährlich wiederkehrend' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:24

  • Text: 'In regelmäßigen Abständen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { value: 'interval', title: 'Intervall', subtitle: 'In regelmäßigen Abständen' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:30

  • Text: 'März'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'März',

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:43

  • Text: 'sek'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'seconds', label: 'sek', title: 'Sekunden' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:44

  • Text: 'min'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'minutes', label: 'min', title: 'Minuten' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:45

  • Text: 'h'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'hours', label: 'h', title: 'Stunden' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:46

  • Text: 'd'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'days', label: 'd', title: 'Tage' },

src/components/FlowEditor/nodes/start/ScheduleStartNodeConfig.tsx:47

  • Text: 'a'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'years', label: 'a', title: 'Jahre' },

src/components/FlowEditor/nodes/start/StartNodeConfig.tsx:12

  • Text: 'manual | form | schedule | email | webhook | api | event'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: "type": "manual | form | schedule | email | webhook | api | event",

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:58

  • Text: 'input.upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: isMimeTypeRef && sourceNode?.type === 'input.upload' && sourceNode.parameters

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:114

  • Text: '— MIME-Type wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— MIME-Type wählen —</option>

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:130

  • Text: '0'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="0"

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:154

  • Text: '— wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— wählen —</option>

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:155

  • Text: 'Ja / wahr'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="true">Ja / wahr</option>

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:156

  • Text: 'Nein / falsch'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="false">Nein / falsch</option>

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:166

  • Text: 'z.B. application/pdf'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: placeholder={isMimeTypeRef ? 'z.B. application/pdf' :Wert}

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:189

  • Text: 'Feld zum Vergleichen wählen…'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Feld zum Vergleichen wählen…"

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:195

  • Text: 'Fester Wert (falls keine Referenz)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Fester Wert (falls keine Referenz)</label>

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:200

  • Text: 'z.B. CH oder 42'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z.B. CH oder 42"

src/components/FlowEditor/nodes/switch/SwitchNodeConfig.tsx:206

  • Text: 'Fälle (Reihenfolge = Ausgang)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Fälle (Reihenfolge = Ausgang)</label>

src/components/FolderTree/FolderTree.tsx:164

  • Text: 'Persönlich'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: personal: 'Persönlich',

src/components/FolderTree/FolderTree.tsx:257

  • Text: 'Umbenennen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); setRenameValue(file.fileName); setRenaming(true); }} title="Umbenennen">

src/components/FolderTree/FolderTree.tsx:278

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={${styles.actionBtn} ${styles.danger}} onClick={_handleDeleteSingle} title="Löschen">

src/components/FolderTree/FolderTree.tsx:311

  • Text: 'Neutralisierung aktiv (klicken zum Deaktivieren)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={file.neutralize ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}

src/components/FolderTree/FolderTree.tsx:311

  • Text: 'Neutralisierung aus (klicken zum Aktivieren)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={file.neutralize ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}

src/components/FolderTree/FolderTree.tsx:380

  • Text: 'Neuer Ordnername:'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });

src/components/FolderTree/FolderTree.tsx:380

  • Text: 'Neuer Ordner'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });

src/components/FolderTree/FolderTree.tsx:499

  • Text: 'Ordner herunterladen (ZIP)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); onDownloadFolder(node.id, node.name); }} title="Ordner herunterladen (ZIP)">

src/components/FolderTree/FolderTree.tsx:504

  • Text: 'Neuer Unterordner'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={styles.actionBtn} onClick={_handleAdd} title="Neuer Unterordner">

src/components/FolderTree/FolderTree.tsx:509

  • Text: 'Umbenennen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); setRenameValue(node.name); setRenaming(true); }} title="Umbenennen">

src/components/FolderTree/FolderTree.tsx:529

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={${styles.actionBtn} ${styles.danger}} onClick={_handleDeleteSingle} title="Löschen">

src/components/FolderTree/FolderTree.tsx:754

  • Text: 'Aktualisieren'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={styles.actionBtn} onClick={(e) => { e.stopPropagation(); onRefresh(); }} title="Aktualisieren">

src/components/FolderTree/FolderTree.tsx:763

  • Text: 'Neuer Ordnername:'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });

src/components/FolderTree/FolderTree.tsx:763

  • Text: 'Neuer Ordner'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const name = await promptFolderName('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });

src/components/FolderTree/FolderTree.tsx:766

  • Text: 'Neuer Ordner'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Neuer Ordner"

src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx:50

  • Text: 'DeleteActionButton requires hookData to be provided'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('DeleteActionButton requires hookData to be provided');

src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx:65

  • Text: 'DeleteActionButton requires hookData.refetch to be defined'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('DeleteActionButton requires hookData.refetch to be defined');

src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx:134

  • Text: 'Delete failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError?.(row, 'Delete failed');

src/components/FormGenerator/ActionButtons/DeleteActionButton/DeleteActionButton.tsx:138

  • Text: 'Delete failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError?.(row, error.message || 'Delete failed');

src/components/FormGenerator/ActionButtons/EditActionButton/EditActionButton.tsx:61

  • Text: 'EditActionButton requires hookData to be provided'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('EditActionButton requires hookData to be provided');

src/components/FormGenerator/ActionButtons/ViewActionButton/ViewActionButton.tsx:103

  • Text: 'Unknown Item'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fileName={(row as any)[nameField] || 'Unknown Item'}

src/components/FormGenerator/FormGeneratorControls/FormGeneratorControls.tsx:43

  • Text: 'Sync to Accounting'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // Optional batch actions (e.g. "Sync to Accounting") shown when items are selected

src/components/FormGenerator/FormGeneratorControls/FormGeneratorControls.tsx:160

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx:670

  • Text: 'English'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'en', label: 'English', required: true },

src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx:671

  • Text: 'German'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'ge', label: 'German', required: false },

src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx:672

  • Text: 'French'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'fr', label: 'French', required: false },

src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx:673

  • Text: 'Italian'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'it', label: 'Italian', required: false }

src/components/FormGenerator/FormGeneratorForm/FormGeneratorForm.tsx:817

  • Text: "({currentValues.length} {t('ausgewählt')})"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.multiselectCount}> ({currentValues.length} {t('ausgewählt')})</span>

src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx:133

  • Text: '⚠️ FormGeneratorList: No fields provided! '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: '⚠️ FormGeneratorList: No fields provided! ' +

src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx:134

  • Text: 'Fields should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Fields should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. ' +

src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx:135

  • Text: 'Please ensure the calling component fetches and passes fields from the backend.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Please ensure the calling component fetches and passes fields from the backend.'

src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx:354

  • Text: 'Some items failed to delete'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('Some items failed to delete');

src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx:441

  • Text: 'in progress'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (statusValue === 'pending' || statusValue === 'waiting' || statusValue === 'in_progress' || statusValue === 'in progress') {

src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx:611

  • Text: 't support '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // TextField doesn't support 'textarea' type, use 'text' instead

src/components/FormGenerator/FormGeneratorList/FormGeneratorList.tsx:611

  • Text: ' type, use '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // TextField doesn't support 'textarea' type, use 'text' instead

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:42

  • Text: 'Mär'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: '01': 'Jan', '02': 'Feb', '03': 'Mär', '04': 'Apr',

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:118

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Keine Daten</div>;

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:162

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Keine Daten</div>;

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:193

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Keine Daten</div>;

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:239

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Keine Daten</div>;

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:285

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Keine Daten</div>;

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:345

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Keine Daten</div>;

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:457

  • Text: 'Unbekannter Sektionstyp'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Unbekannter Sektionstyp</div>;

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:522

  • Text: 'Januar'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 1, label: 'Januar' }, { value: 2, label: 'Februar' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:522

  • Text: 'Februar'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 1, label: 'Januar' }, { value: 2, label: 'Februar' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:523

  • Text: 'März'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 3, label: 'März' }, { value: 4, label: 'April' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:523

  • Text: 'April'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 3, label: 'März' }, { value: 4, label: 'April' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:524

  • Text: 'Mai'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 5, label: 'Mai' }, { value: 6, label: 'Juni' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:524

  • Text: 'Juni'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 5, label: 'Mai' }, { value: 6, label: 'Juni' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:525

  • Text: 'Juli'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 7, label: 'Juli' }, { value: 8, label: 'August' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:525

  • Text: 'August'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 7, label: 'Juli' }, { value: 8, label: 'August' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:526

  • Text: 'September'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 9, label: 'September' }, { value: 10, label: 'Oktober' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:526

  • Text: 'Oktober'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 9, label: 'September' }, { value: 10, label: 'Oktober' },

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:527

  • Text: 'November'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 11, label: 'November' }, { value: 12, label: 'Dezember' }

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:527

  • Text: 'Dezember'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 11, label: 'November' }, { value: 12, label: 'Dezember' }

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:652

  • Text: 'Keine Daten verfügbar'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: noDataMessage = 'Keine Daten verfügbar',

src/components/FormGenerator/FormGeneratorReport/FormGeneratorReport.tsx:718

  • Text: 'Lade Daten...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingContainer}>Lade Daten...</div>

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:363

  • Text: '⚠️ FormGeneratorTable: No columns provided! '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: '⚠️ FormGeneratorTable: No columns provided! ' +

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:364

  • Text: 'Columns should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Columns should come from Pydantic attribute definitions via /attributes/{entityType} endpoint. ' +

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:365

  • Text: 'Please ensure the calling component fetches and passes columns from the backend.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Please ensure the calling component fetches and passes columns from the backend.'

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:1328

  • Text: "') + '"
  • Art: string_literal
  • Kontext: string literal
  • Zeile: str = '"' + str.replace(/"/g, '""') + '"';

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:1686

  • Text: 's a number, check if it'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // If it's a number, check if it's in seconds (typical Unix timestamp range)

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:1694

  • Text: 's an ISO date string or date string (contains '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // Check if it's an ISO date string or date string (contains 'T', '-', or ':')

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:1694

  • Text: ', or '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // Check if it's an ISO date string or date string (contains 'T', '-', or ':')

src/components/FormGenerator/FormGeneratorTable/FormGeneratorTable.tsx:2088

  • Text: '2px solid var(--border-color, #e2e8f0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '2px solid var(--border-color, #e2e8f0)'

src/components/Navigation/MandateNavigation.tsx:62

  • Text: 'Meine Sicht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * Used for grouping static items under "Meine Sicht" and "Administration".

src/components/Navigation/UserSection.tsx:142

  • Text: 'Rechtliche Hinweise'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2>Rechtliche Hinweise</h2>

src/components/Navigation/UserSection.tsx:152

  • Text: 'Datenverarbeitung und KI-Nutzung'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Datenverarbeitung und KI-Nutzung</h3>

src/components/Navigation/UserSection.tsx:154

  • Text: '1. Einwilligung zur Datenverarbeitung'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>1. Einwilligung zur Datenverarbeitung</h4>

src/components/Navigation/UserSection.tsx:155

  • 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:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <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>

src/components/Navigation/UserSection.tsx:157

  • Text: 'Sie autorisieren die Erfassung, Verarbeitung, Übertragung und Speicherung aller Daten, die Sie bei der Nutzung unserer Dienste bereitstellen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Sie autorisieren die Erfassung, Verarbeitung, Übertragung und Speicherung aller Daten, die Sie bei der Nutzung unserer Dienste bereitstellen.</li>

src/components/Navigation/UserSection.tsx:158

  • Text: 'Nutzerdaten können an Drittanbieter von künstlicher Intelligenz übertragen werden (z.B. OpenAI).'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Nutzerdaten können an Drittanbieter von künstlicher Intelligenz übertragen werden (z.B. OpenAI).</li>

src/components/Navigation/UserSection.tsx:159

  • Text: 'Diese Einwilligung erstreckt sich auf alle Inhalte, einschließlich Text, Bilder, Dokumente und Gesprächsverläufe.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Diese Einwilligung erstreckt sich auf alle Inhalte, einschließlich Text, Bilder, Dokumente und Gesprächsverläufe.</li>

src/components/Navigation/UserSection.tsx:162

  • Text: '2. Anerkennung der KI-Verarbeitungsrisiken'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>2. Anerkennung der KI-Verarbeitungsrisiken</h4>

src/components/Navigation/UserSection.tsx:164

  • Text: 'KI-Systeme können unerwartete oder ungenaue Ausgaben erzeugen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>KI-Systeme können unerwartete oder ungenaue Ausgaben erzeugen.</li>

src/components/Navigation/UserSection.tsx:165

  • Text: 'KI-Dienste können Daten gemäß ihren eigenen Nutzungsbedingungen speichern oder daraus lernen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>KI-Dienste können Daten gemäß ihren eigenen Nutzungsbedingungen speichern oder daraus lernen.</li>

src/components/Navigation/UserSection.tsx:166

  • Text: 'Trotz Sicherheitsmaßnahmen können Daten anfällig für unbefugten Zugriff sein.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Trotz Sicherheitsmaßnahmen können Daten anfällig für unbefugten Zugriff sein.</li>

src/components/Navigation/UserSection.tsx:169

  • Text: '3. Haftungsausschluss'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>3. Haftungsausschluss</h4>

src/components/Navigation/UserSection.tsx:170

  • Text: 'Im größtmöglichen Umfang verzichten Sie auf Ansprüche, die sich aus der KI-Verarbeitung ergeben, einschließlich Datenverletzungen und unbeabsichtigter Offenlegung.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <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>

src/components/Navigation/UserSection.tsx:174

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <a href="/poweron-privacy.html" target="_blank" rel="noopener noreferrer">

src/components/Navigation/UserSection.tsx:177

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <a href="/poweron-terms.html" target="_blank" rel="noopener noreferrer">

src/components/Navigation/UserSection.tsx:180

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <a href="/poweron-home.html" target="_blank" rel="noopener noreferrer">

src/components/NotificationBell/NotificationBell.tsx:29

  • Text: 'Gerade eben'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (diff < 60) return 'Gerade eben';

src/components/NotificationBell/NotificationBell.tsx:183

  • Text: 'Keine Benachrichtigungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Benachrichtigungen</p>

src/components/NotificationBell/NotificationBell.tsx:253

  • Text: 'Schliessen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Schliessen"

src/components/OnboardingAssistant.tsx:21

  • Text: 'Tipp: Ein Mandant ist Ihr Arbeitsbereich. Sie koennen spaeter weitere Mandanten fuer Teams oder Projekte erstellen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: mandate: 'Tipp: Ein Mandant ist Ihr Arbeitsbereich. Sie koennen spaeter weitere Mandanten fuer Teams oder Projekte erstellen.',

src/components/OnboardingAssistant.tsx:22

  • Text: 'Tipp: Im Store finden Sie AI-Workspace, CommCoach und weitere Features. Aktivieren Sie mindestens eines, um loszulegen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: feature: 'Tipp: Im Store finden Sie AI-Workspace, CommCoach und weitere Features. Aktivieren Sie mindestens eines, um loszulegen.',

src/components/OnboardingAssistant.tsx:23

  • Text: 'Tipp: Verbinden Sie Ihre Datenquellen (z.B. SharePoint, Google Drive), damit der AI-Assistent auf Ihre Dokumente zugreifen kann.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: connection: 'Tipp: Verbinden Sie Ihre Datenquellen (z.B. SharePoint, Google Drive), damit der AI-Assistent auf Ihre Dokumente zugreifen kann.',

src/components/OnboardingAssistant.tsx:24

  • Text: 'Tipp: Starten Sie einen Chat mit dem AI-Assistenten. Er kann Ihre verbundenen Daten analysieren und Fragen beantworten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: chat: 'Tipp: Starten Sie einen Chat mit dem AI-Assistenten. Er kann Ihre verbundenen Daten analysieren und Fragen beantworten.',

src/components/OnboardingAssistant.tsx:97

  • Text: 'Mandant einrichten'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Mandant einrichten',

src/components/OnboardingAssistant.tsx:99

  • Text: 'Dein Mandant ist eingerichtet.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Dein Mandant ist eingerichtet.'

src/components/OnboardingAssistant.tsx:101

  • Text: 'Du bist Mitglied eines Mandanten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Du bist Mitglied eines Mandanten.'

src/components/OnboardingAssistant.tsx:102

  • Text: 'Erstelle deinen Arbeitsbereich.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Erstelle deinen Arbeitsbereich.',

src/components/OnboardingAssistant.tsx:109

  • Text: 'Erstes Feature aktivieren'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Erstes Feature aktivieren',

src/components/OnboardingAssistant.tsx:111

  • Text: 'Du hast aktive Features.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Du hast aktive Features.'

src/components/OnboardingAssistant.tsx:112

  • Text: 'Aktiviere dein erstes Feature im Store.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Aktiviere dein erstes Feature im Store.',

src/components/OnboardingAssistant.tsx:126

  • Text: 'Erste Datenquelle einbinden'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Erste Datenquelle einbinden',

src/components/OnboardingAssistant.tsx:128

  • Text: 'Du hast Verbindungen eingerichtet.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Du hast Verbindungen eingerichtet.'

src/components/OnboardingAssistant.tsx:129

  • Text: 'Verbinde deine erste Datenquelle.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Verbinde deine erste Datenquelle.',

src/components/OnboardingAssistant.tsx:147

  • Text: 'Ersten AI-Chat starten'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Ersten AI-Chat starten',

src/components/OnboardingAssistant.tsx:149

  • Text: 'Du hast bereits Chats gestartet.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Du hast bereits Chats gestartet.'

src/components/OnboardingAssistant.tsx:150

  • Text: 'Starte deinen ersten Chat mit dem AI-Assistenten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Starte deinen ersten Chat mit dem AI-Assistenten.',

src/components/OnboardingAssistant.tsx:208

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/components/OnboardingAssistant.tsx:227

  • Text: 'background 0.3s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.3s',

src/components/OnboardingAssistant.tsx:242

  • Text: '1px solid var(--accent, #4f46e5)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: step.completed ? 'none' : isNextStep ? '1px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',

src/components/OnboardingAssistant.tsx:242

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: step.completed ? 'none' : isNextStep ? '1px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',

src/components/OnboardingAssistant.tsx:268

  • Text: '3px solid var(--accent, #4f46e5)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderLeft: '3px solid var(--accent, #4f46e5)',

src/components/OnboardingAssistant.tsx:281

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: '1px solid var(--border-color, #e5e7eb)',

src/components/OnboardingAssistant.tsx:295

  • Text: '1px solid var(--border-color, #d1d5db)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #d1d5db)',

src/components/OnboardingWizard.tsx:24

  • Text: 'Du hast bereits einen Mandanten mit Admin-Zugang.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Du hast bereits einen Mandanten mit Admin-Zugang.');

src/components/OnboardingWizard.tsx:30

  • Text: 'Fehler bei der Einrichtung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err?.response?.data?.detail || 'Fehler bei der Einrichtung');

src/components/OnboardingWizard.tsx:44

  • Text: '0 8px 32px rgba(0,0,0,0.2)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: maxWidth: '480px', width: '90%', boxShadow: '0 8px 32px rgba(0,0,0,0.2)',

src/components/OnboardingWizard.tsx:54

  • Text: '2px solid var(--accent, #4f46e5)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: planKey === 'TRIAL_7D' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',

src/components/OnboardingWizard.tsx:54

  • Text: '2px solid var(--border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: planKey === 'TRIAL_7D' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',

src/components/OnboardingWizard.tsx:60

  • Text: 'Kostenlos testen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>Kostenlos testen</strong>

src/components/OnboardingWizard.tsx:69

  • Text: '2px solid var(--accent, #4f46e5)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: planKey === 'STANDARD_MONTHLY' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',

src/components/OnboardingWizard.tsx:69

  • Text: '2px solid var(--border, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: planKey === 'STANDARD_MONTHLY' ? '2px solid var(--accent, #4f46e5)' : '2px solid var(--border, #e5e7eb)',

src/components/OnboardingWizard.tsx:75

  • Text: 'Standard (Monatlich)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>Standard (Monatlich)</strong>

src/components/OnboardingWizard.tsx:90

  • Text: 'z. B. Firmenname oder Projektname'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z. B. Firmenname oder Projektname"

src/components/OnboardingWizard.tsx:114

  • Text: 'Wird eingerichtet...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {loading ? 'Wird eingerichtet...' : 'Mandant erstellen'}

src/components/OnboardingWizard.tsx:114

  • Text: 'Mandant erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {loading ? 'Wird eingerichtet...' : 'Mandant erstellen'}

src/components/ProviderSelector/ProviderSelector.tsx:80

  • Text: 'Anthropic (Claude)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: anthropic: 'Anthropic (Claude)',

src/components/ProviderSelector/ProviderSelector.tsx:81

  • Text: 'OpenAI (GPT)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: openai: 'OpenAI (GPT)',

src/components/ProviderSelector/ProviderSelector.tsx:82

  • Text: 'Mistral (Le Chat)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: mistral: 'Mistral (Le Chat)',

src/components/ProviderSelector/ProviderSelector.tsx:84

  • Text: 'Tavily (Web Search)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: tavily: 'Tavily (Web Search)',

src/components/ProviderSelector/ProviderSelector.tsx:85

  • Text: 'Private LLM'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: privatellm: 'Private LLM',

src/components/ProviderSelector/ProviderSelector.tsx:144

  • Text: '-- Auto --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Auto --</option>

src/components/ProviderSelector/ProviderSelector.tsx:264

  • Text: 'Kein Provider ausgewählt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (noneSelected) return 'Kein Provider ausgewählt';

src/components/ProviderSelector/ProviderSelector.tsx:265

  • Text: 'Alle Provider aktiv (dynamisch)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (allSelected) return 'Alle Provider aktiv (dynamisch)';

src/components/ProviderSelector/ProviderSelector.tsx:282

  • Text: 'Provider auswählen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Provider auswählen"

src/components/ProviderSelector/ProviderSelector.tsx:347

  • Text: 'Alle Provider'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <span className={styles.allProviders}>Alle Provider</span>;

src/components/RbacExportImport/RbacExportImport.tsx:47

  • Text: 'Zusammenführen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Zusammenführen',

src/components/RbacExportImport/RbacExportImport.tsx:48

  • Text: 'Bestehende Regeln aktualisieren, neue hinzufügen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: description: 'Bestehende Regeln aktualisieren, neue hinzufügen',

src/components/RbacExportImport/RbacExportImport.tsx:53

  • Text: 'Nur hinzufügen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Nur hinzufügen',

src/components/RbacExportImport/RbacExportImport.tsx:54

  • Text: 'Nur neue Regeln hinzufügen, bestehende nicht ändern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: description: 'Nur neue Regeln hinzufügen, bestehende nicht ändern',

src/components/RbacExportImport/RbacExportImport.tsx:59

  • Text: 'Ersetzen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Ersetzen',

src/components/RbacExportImport/RbacExportImport.tsx:60

  • Text: 'Alle bestehenden Regeln löschen und ersetzen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: description: 'Alle bestehenden Regeln löschen und ersetzen',

src/components/RbacExportImport/RbacExportImport.tsx:91

  • Text: 'Rollen ({data.roles.length})'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h5>Rollen ({data.roles.length})</h5>

src/components/RbacExportImport/RbacExportImport.tsx:100

  • Text: '... und {data.roles.length - 5} weitere'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li className={styles.moreItems}>... und {data.roles.length - 5} weitere</li>

src/components/RbacExportImport/RbacExportImport.tsx:105

  • Text: 'Regeln ({data.accessRules.length})'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h5>Regeln ({data.accessRules.length})</h5>

src/components/RbacExportImport/RbacExportImport.tsx:114

  • Text: '... und {data.accessRules.length - 5} weitere'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li className={styles.moreItems}>... und {data.accessRules.length - 5} weitere</li>

src/components/RbacExportImport/RbacExportImport.tsx:144

  • Text: 'Import erfolgreich'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isSuccess ? 'Import erfolgreich' : 'Import fehlgeschlagen'}

src/components/RbacExportImport/RbacExportImport.tsx:144

  • Text: 'Import fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isSuccess ? 'Import erfolgreich' : 'Import fehlgeschlagen'}

src/components/RbacExportImport/RbacExportImport.tsx:151

  • Text: 'Rollen erstellt:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li><strong>Rollen erstellt:</strong> {result.rolesCreated}</li>

src/components/RbacExportImport/RbacExportImport.tsx:152

  • Text: 'Rollen aktualisiert:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li><strong>Rollen aktualisiert:</strong> {result.rolesUpdated}</li>

src/components/RbacExportImport/RbacExportImport.tsx:153

  • Text: 'Regeln erstellt:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li><strong>Regeln erstellt:</strong> {result.rulesCreated}</li>

src/components/RbacExportImport/RbacExportImport.tsx:154

  • Text: 'Regeln aktualisiert:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li><strong>Regeln aktualisiert:</strong> {result.rulesUpdated}</li>

src/components/RbacExportImport/RbacExportImport.tsx:232

  • Text: 'Fehler beim Parsen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setParseError(result.error || 'Fehler beim Parsen');

src/components/RbacExportImport/RbacExportImport.tsx:288

  • Text: ' der globalen Templates'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isGlobal ? ' der globalen Templates' : des Mandanten "${mandateName || mandateId}"}

src/components/RbacExportImport/RbacExportImport.tsx:288

  • Text: '${mandateName || mandateId}'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isGlobal ? ' der globalen Templates' : des Mandanten "${mandateName || mandateId}"}

src/components/RbacExportImport/RbacExportImport.tsx:335

  • Text: 'JSON-Datei auswählen oder hier ablegen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>JSON-Datei auswählen oder hier ablegen</span>

src/components/RbacExportImport/RbacExportImport.tsx:343

  • Text: 'Datei entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Datei entfernen"

src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx:91

  • Text: 'no results'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setShowSuggestions(results.length > 0 || true); // Show dropdown even if empty to show "no results" or error

src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx:96

  • Text: 'Fehler beim Laden der Adressvorschläge'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMessage = err?.response?.data?.detail || err?.message || 'Fehler beim Laden der Adressvorschläge';

src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx:277

  • Text: 'Suche Adressen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.loadingText}>Suche Adressen...</span>

src/components/UiComponents/AddressAutocomplete/AddressAutocomplete.tsx:287

  • Text: 'Keine Adressen gefunden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.noResultsText}>Keine Adressen gefunden</span>

src/components/UiComponents/AutoScroll/AutoScroll.tsx:22

  • Text: 'at bottom'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * Threshold in pixels from bottom to consider user "at bottom"

src/components/UiComponents/AutoScroll/AutoScroll.tsx:151

  • Text: 'Scroll to bottom'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Scroll to bottom"

src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx:42

  • Text: 'Ausnützungsziffer:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Ausnützungsziffer:</span>

src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx:54

  • Text: 'Gebäudelänge max:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Gebäudelänge max:</span>

src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx:66

  • Text: 'Mehrlängenzuschlag:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Mehrlängenzuschlag:</span>

src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx:72

  • Text: 'Höchstmass max:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Höchstmass max:</span>

src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx:78

  • Text: 'Fassadenhöhe:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Fassadenhöhe:</span>

src/components/UiComponents/BauvorschriftenSection/BauvorschriftenSection.tsx:89

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: rel="noopener noreferrer"

src/components/UiComponents/Button/CreateButton/CreateButton.tsx:11

  • Text: 'Create New Item'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: popupTitle = 'Create New Item',

src/components/UiComponents/Button/CreateButton/CreateButton.tsx:128

  • Text: 'Creation failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError(result?.error || 'Creation failed');

src/components/UiComponents/Button/CreateButton/CreateButton.tsx:134

  • Text: 'Creation failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: onError(error.message || 'Creation failed');

src/components/UiComponents/Button/UploadButton/UploadButton.tsx:74

  • Text: 'Upload File'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {children || (isUploading ? 'Uploading...' : 'Upload File')}

src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx:68

  • Text: 'No files connected to this workflow'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage = 'No files connected to this workflow'

src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx:184

  • Text: 'Connected Files'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.title}>Connected Files</h3>

src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx:231

  • Text: 'Click to detach from next message'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={onAttach ? (isPendingFile ? 'Click to detach from next message' : 'Click to attach for next message') : undefined}

src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx:231

  • Text: 'Click to attach for next message'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={onAttach ? (isPendingFile ? 'Click to detach from next message' : 'Click to attach for next message') : undefined}

src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx:238

  • Text: '(click to detach)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isPendingFile ? '(click to detach)' : '(click to attach)'}

src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx:238

  • Text: '(click to attach)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isPendingFile ? '(click to detach)' : '(click to attach)'}

src/components/UiComponents/ConnectedFilesList/ConnectedFilesList.tsx:248

  • Text: 'AI Created'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {file.source === 'user_uploaded' ? 'Uploaded' : 'AI Created'}

src/components/UiComponents/DropdownSelect/DropdownSelect.tsx:40

  • Text: 'Select an item'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder = 'Select an item',

src/components/UiComponents/DropdownSelect/DropdownSelect.tsx:41

  • Text: 'No items available'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage = 'No items available',

src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx:95

  • Text: 'Close warning'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Close warning';

src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx:97

  • Text: 'Close error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Close error';

src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx:99

  • Text: 'Close success message'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Close success message';

src/components/UiComponents/InfoMessageOverlay/MessageOverlay.tsx:102

  • Text: 'Close message'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Close message';

src/components/UiComponents/LocationInput/LocationInput.tsx:23

  • Text: 'Kanton, Gemeinde, Adresse oder Parzelle'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder = 'Kanton, Gemeinde, Adresse oder Parzelle',

src/components/UiComponents/Log/Log.tsx:25

  • Text: 'No log information available'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage = 'No log information available',

src/components/UiComponents/MapView/MapViewLeaflet.tsx:16

  • Text: '© OpenStreetMap contributors'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: attribution: '© OpenStreetMap contributors',

src/components/UiComponents/MapView/MapViewLeaflet.tsx:21

  • Text: '© OpenStreetMap © CARTO'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { attribution: '© OpenStreetMap © CARTO', maxZoom: 19 }

src/components/UiComponents/MapView/MapViewLeaflet.tsx:50

  • Text: 'Klicken Sie auf die Karte, um einen Standort auszuwählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage = 'Klicken Sie auf die Karte, um einen Standort auszuwählen',

src/components/UiComponents/MapView/MapViewLeaflet.tsx:195

  • Text: '
    Ausgewählte Fläche
    Zum Entfernen Parzelle im Panel nutzen
    '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');

src/components/UiComponents/MapView/MapViewLeaflet.tsx:195

  • Text: 'Ausgewählte Fläche'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');

src/components/UiComponents/MapView/MapViewLeaflet.tsx:195

  • Text: 'Zum Entfernen Parzelle im Panel nutzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');

src/components/UiComponents/MapView/MapViewLeaflet.tsx:208

  • Text: '
    Ausgewählte Fläche
    Zum Entfernen Parzelle im Panel nutzen
    '
  • Art: string_literal
  • Kontext: string literal
  • Zeile: polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');

src/components/UiComponents/MapView/MapViewLeaflet.tsx:208

  • Text: 'Ausgewählte Fläche'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');

src/components/UiComponents/MapView/MapViewLeaflet.tsx:208

  • Text: 'Zum Entfernen Parzelle im Panel nutzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: polygon.bindPopup('<div><strong>Ausgewählte Fläche</strong><br/><em>Zum Entfernen Parzelle im Panel nutzen</em></div>');

src/components/UiComponents/MapView/MapViewLeaflet.tsx:224

  • Text: 'Parzelle ${parcel.number || parcel.id}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>Parzelle ${parcel.number || parcel.id}</strong><br/>

src/components/UiComponents/MapView/MapViewLeaflet.tsx:226

  • Text: 'Ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <em>Ausgewählt</em>

src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx:82

  • Text: 'Aktion fehlgeschlagen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Aktion fehlgeschlagen</span>

src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx:202

  • Text: 'Löschen bestätigen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Löschen bestätigen"

src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx:210

  • Text: 'Abbrechen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Abbrechen"

src/components/UiComponents/Messages/ChatMessages/ChatMessage.tsx:220

  • Text: 'Nachricht löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Nachricht löschen"

src/components/UiComponents/Messages/Messages.tsx:18

  • Text: 'No messages yet'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage = 'No messages yet',

src/components/UiComponents/OerebSection/OerebSection.tsx:71

  • Text: 'In Kraft'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'In Kraft'

src/components/UiComponents/OerebSection/OerebSection.tsx:95

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: rel="noopener noreferrer"

src/components/UiComponents/OerebSection/OerebSection.tsx:127

  • Text: 'ÖREB-Auszug.pdf'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fileName="ÖREB-Auszug.pdf"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:148

  • Text: 'Fehler beim Laden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: [parcelId]: e?.response?.data?.detail || e?.message || 'Fehler beim Laden'

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:175

  • Text: 'Fehler bei der Extraktion'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: [parcelId]: e?.response?.data?.detail || e?.message || 'Fehler bei der Extraktion'

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:219

  • Text: 'Parzellen-Informationen ({parcels.length})'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.title}>Parzellen-Informationen ({parcels.length})</h2>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:228

  • Text: 'Gesamtfläche'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.aggregatedTitle}>Gesamtfläche</h3>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:251

  • Text: '— {bz.area_m2.toFixed(2)} m²'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.bauzoneArea}> — {bz.area_m2.toFixed(2)} m²</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:267

  • Text: 'Parzelle entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Parzelle entfernen"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:318

  • Text: 'Fläche:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Fläche:</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:331

  • Text: 'Grundstückstyp:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Grundstückstyp:</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:345

  • Text: 'Dokumente werden geladen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.bzoHint}>Dokumente werden geladen...</p>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:363

  • Text: 'Dokument öffnen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Dokument öffnen"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:381

  • Text: 'Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:405

  • Text: 'Fakten aus BZO'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Fakten aus BZO</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:422

  • Text: 'Vorschläge'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Vorschläge</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:441

  • Text: 'Weiterführende Bestimmungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Weiterführende Bestimmungen</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:492

  • Text: 'Details anzeigen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <summary className={styles.zoneSummary}>Details anzeigen</summary>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:507

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: rel="noopener noreferrer"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:533

  • Text: 'Parzelle entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Parzelle entfernen"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:584

  • Text: 'Fläche:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Fläche:</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:597

  • Text: 'Grundstückstyp:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Grundstückstyp:</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:611

  • Text: 'Dokumente werden geladen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.bzoHint}>Dokumente werden geladen...</p>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:629

  • Text: 'Dokument öffnen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Dokument öffnen"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:647

  • Text: 'Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Inhalt mit LangGraph extrahieren (inkl. Machbarkeitsstudie)"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:671

  • Text: 'Fakten aus BZO'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Fakten aus BZO</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:688

  • Text: 'Vorschläge'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Vorschläge</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:707

  • Text: 'Weiterführende Bestimmungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.label}>Weiterführende Bestimmungen</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:756

  • Text: 'Details anzeigen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <summary className={styles.zoneSummary}>Details anzeigen</summary>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:771

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: rel="noopener noreferrer"

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:994

  • Text: 'Zone: {rule.zone_raw}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {rule.zone_raw && <span>Zone: {rule.zone_raw}</span>}

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:995

  • Text: 'Seite {rule.page}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {rule.page && <span>Seite {rule.page}</span>}

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:996

  • Text: 'Bereich: {rule.rule_scope}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {rule.rule_scope && <span>Bereich: {rule.rule_scope}</span>}

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:1027

  • Text: 'Zone: {article.zone_raw}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {article.zone_raw && <span>Zone: {article.zone_raw}</span>}

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:1028

  • Text: 'Seiten {article.page_start}-{article.page_end}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Seiten {article.page_start}-{article.page_end}</span>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:1058

  • Text: 'Fehler ({data.errors.length})'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h5 className={styles.bzoErrorTitle}>Fehler ({data.errors.length})</h5>

src/components/UiComponents/ParcelInfoPanel/ParcelInfoPanel.tsx:1068

  • Text: 'Warnungen ({data.warnings.length})'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h5 className={styles.bzoWarningTitle}>Warnungen ({data.warnings.length})</h5>

src/components/UiComponents/Popup/Popup.tsx:108

  • Text: 'Close'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Close"

src/components/UiComponents/Toast/Toast.tsx:53

  • Text: 'Schließen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Schließen"

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:23

  • Text: 'Deutsch'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'de-DE', label: 'Deutsch', shortCode: 'de', flag: '🇩🇪' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:24

  • Text: 'Deutsch (Schweiz)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'de-CH', label: 'Deutsch (Schweiz)', shortCode: 'de', flag: '🇨🇭' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:25

  • Text: 'English (US)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'en-US', label: 'English (US)', shortCode: 'en', flag: '🇺🇸' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:26

  • Text: 'English (UK)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'en-GB', label: 'English (UK)', shortCode: 'en', flag: '🇬🇧' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:27

  • Text: 'Français'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'fr-FR', label: 'Français', shortCode: 'fr', flag: '🇫🇷' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:28

  • Text: 'Français (Suisse)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'fr-CH', label: 'Français (Suisse)', shortCode: 'fr', flag: '🇨🇭' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:29

  • Text: 'Italiano'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'it-IT', label: 'Italiano', shortCode: 'it', flag: '🇮🇹' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:30

  • Text: 'Italiano (Svizzera)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'it-CH', label: 'Italiano (Svizzera)', shortCode: 'it', flag: '🇨🇭' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:31

  • Text: 'Español'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'es-ES', label: 'Español', shortCode: 'es', flag: '🇪🇸' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:32

  • Text: 'Português'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'pt-BR', label: 'Português', shortCode: 'pt', flag: '🇧🇷' },

src/components/UiComponents/VoiceLanguageSelect/VoiceLanguageSelect.tsx:72

  • Text: 'Sprache für Spracherkennung'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title = 'Sprache für Spracherkennung',

src/components/UiComponents/WorkflowStatus/WorkflowStatus.tsx:69

  • Text: 'Workflow running'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <div className={styles.spinner} aria-label="Workflow running" />

src/components/UiComponents/WorkflowStatus/WorkflowStatus.tsx:77

  • Text: 'Round {workflowStatus.round}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.roundBadge}>Round {workflowStatus.round}</span>

src/components/UnifiedDataBar/ChatsTab.tsx:45

  • Text: 'gerade eben'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (diffMin < 1) return 'gerade eben';

src/components/UnifiedDataBar/ChatsTab.tsx:284

  • Text: 'Umbenennen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Umbenennen"

src/components/UnifiedDataBar/ChatsTab.tsx:293

  • Text: 'Wiederherstellen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Wiederherstellen"

src/components/UnifiedDataBar/ChatsTab.tsx:301

  • Text: 'Archivieren'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Archivieren"

src/components/UnifiedDataBar/ChatsTab.tsx:310

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Löschen"

src/components/UnifiedDataBar/ChatsTab.tsx:324

  • Text: 'AI Workspace'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: workspace: 'AI Workspace',

src/components/UnifiedDataBar/ChatsTab.tsx:332

  • Text: 'Lade Chats...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: if (loading) return <div className={styles.loading}>Lade Chats...</div>;

src/components/UnifiedDataBar/ChatsTab.tsx:340

  • Text: 'Suchen...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Suchen..."

src/components/UnifiedDataBar/ChatsTab.tsx:345

  • Text: 'Neuer Chat'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button className={styles.createBtn} onClick={() => { onCreateNew(); setTimeout(_loadChats, 500); }} title="Neuer Chat">

src/components/UnifiedDataBar/ChatsTab.tsx:437

  • Text: 'Keine archivierten Chats.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {filter === 'archived' ? 'Keine archivierten Chats.' : 'Keine aktiven Chats.'}

src/components/UnifiedDataBar/ChatsTab.tsx:437

  • Text: 'Keine aktiven Chats.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {filter === 'archived' ? 'Keine archivierten Chats.' : 'Keine aktiven Chats.'}

src/components/UnifiedDataBar/FilesTab.tsx:233

  • Text: 'Lade Dateien...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: if (loading) return <div className={styles.loading}>Lade Dateien...</div>;

src/components/UnifiedDataBar/FilesTab.tsx:261

  • Text: 'Upload files'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Upload files"

src/components/UnifiedDataBar/FilesTab.tsx:284

  • Text: 'Dateien suchen...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Dateien suchen..."

src/components/UnifiedDataBar/FilesTab.tsx:325

  • Text: 'Keine Dateien gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchQuery ? 'Keine Dateien gefunden' : 'Keine Dateien. Drag & Drop zum Hochladen.'}

src/components/UnifiedDataBar/FilesTab.tsx:325

  • Text: 'Keine Dateien. Drag & Drop zum Hochladen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {searchQuery ? 'Keine Dateien gefunden' : 'Keine Dateien. Drag & Drop zum Hochladen.'}

src/components/UnifiedDataBar/SourcesTab.tsx:188

  • Text: 'Feature Instance'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: featureInstance: 'Feature Instance',

src/components/UnifiedDataBar/SourcesTab.tsx:340

  • Text: 'spin 0.6s linear infinite'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: animation: 'spin 0.6s linear infinite',

src/components/UnifiedDataBar/SourcesTab.tsx:853

  • Text: 'Neutralize: ON (click to deactivate)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={ds.neutralize ? 'Neutralize: ON (click to deactivate)' : 'Neutralize: OFF (click to activate)'}

src/components/UnifiedDataBar/SourcesTab.tsx:853

  • Text: 'Neutralize: OFF (click to activate)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={ds.neutralize ? 'Neutralize: ON (click to deactivate)' : 'Neutralize: OFF (click to activate)'}

src/components/UnifiedDataBar/SourcesTab.tsx:860

  • Text: 'Entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Entfernen"

src/components/UnifiedDataBar/SourcesTab.tsx:956

  • Text: 'Remove all tables for this record'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Remove all tables for this record"

src/components/UnifiedDataBar/SourcesTab.tsx:986

  • Text: 'Neutralize: ON'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}

src/components/UnifiedDataBar/SourcesTab.tsx:986

  • Text: 'Neutralize: OFF'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}

src/components/UnifiedDataBar/SourcesTab.tsx:993

  • Text: 'Remove'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Remove"

src/components/UnifiedDataBar/SourcesTab.tsx:1010

  • Text: '3px solid #7b1fa2'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderLeft: '3px solid #7b1fa2',

src/components/UnifiedDataBar/SourcesTab.tsx:1029

  • Text: 'Neutralize: ON'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}

src/components/UnifiedDataBar/SourcesTab.tsx:1029

  • Text: 'Neutralize: OFF'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={fds.neutralize ? 'Neutralize: ON' : 'Neutralize: OFF'}

src/components/UnifiedDataBar/SourcesTab.tsx:1036

  • Text: 'Entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Entfernen"

src/components/UnifiedDataBar/SourcesTab.tsx:1139

  • Text: 'background 0.1s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.1s',

src/components/UnifiedDataBar/SourcesTab.tsx:1166

  • Text: 'Add as data source'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Add as data source"

src/components/UnifiedDataBar/SourcesTab.tsx:1168

  • Text: '+ Add'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isAdding ? '...' : '+ Add'}

src/components/UnifiedDataBar/SourcesTab.tsx:1172

  • Text: 'Already added'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <span style={{ fontSize: 10, color: '#4caf50', flexShrink: 0 }} title="Already added">

src/components/UnifiedDataBar/SourcesTab.tsx:1240

  • Text: 'background 0.1s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.1s', userSelect: 'none',

src/components/UnifiedDataBar/SourcesTab.tsx:1315

  • Text: 'background 0.1s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.1s', userSelect: 'none',

src/components/UnifiedDataBar/SourcesTab.tsx:1411

  • Text: 'background 0.1s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.1s', userSelect: 'none',

src/components/UnifiedDataBar/SourcesTab.tsx:1429

  • Text: 'Add as feature data source'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Add as feature data source"

src/components/UnifiedDataBar/SourcesTab.tsx:1431

  • Text: '+ Add'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isAdding ? '...' : '+ Add'}

src/components/UnifiedDataBar/SourcesTab.tsx:1435

  • Text: 'Already added'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <span style={{ fontSize: 10, color: '#4caf50', flexShrink: 0 }} title="Already added">

src/components/UnifiedDataBar/SourcesTab.tsx:1479

  • Text: 'background 0.1s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.1s', userSelect: 'none',

src/components/UnifiedDataBar/SourcesTab.tsx:1554

  • Text: 'background 0.1s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.1s', userSelect: 'none',

src/components/UnifiedDataBar/SourcesTab.tsx:1575

  • Text: 'Add all tables for this record'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Add all tables for this record"

src/components/UnifiedDataBar/SourcesTab.tsx:1577

  • Text: '+ Add'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isAdding ? '...' : '+ Add'}

src/components/UnifiedDataBar/SourcesTab.tsx:1581

  • Text: 'Already added'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <span style={{ fontSize: 10, color: '#4caf50', flexShrink: 0 }} title="Already added">

src/contexts/FileContext.tsx:209

  • Text: 'useFileContext must be used within a FileProvider'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('useFileContext must be used within a FileProvider');

src/contexts/PekContext.tsx:74

  • Text: 'usePekContext must be used within a PekProvider'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('usePekContext must be used within a PekProvider');

src/contexts/ToastContext.tsx:94

  • Text: 'useToast must be used within a ToastProvider'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('useToast must be used within a ToastProvider');

src/contexts/WorkflowSelectionContext.tsx:38

  • Text: 'useWorkflowSelection must be used within a WorkflowSelectionProvider'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('useWorkflowSelection must be used within a WorkflowSelectionProvider');

src/core/PageManager/SidebarProvider.tsx:53

  • Text: 'useSidebar must be used within a SidebarProvider'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('useSidebar must be used within a SidebarProvider');

src/core/PageManager/SidebarProvider.tsx:461

  • Text: 'Failed to load sidebar items'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err instanceof Error ? err.message : 'Failed to load sidebar items');

src/hooks/useAccessRules.tsx:23

  • Text: 'Keine'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'n', label: 'Keine', color: '#e53e3e' },

src/hooks/useAccessRules.tsx:24

  • Text: 'Eigene'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'm', label: 'Eigene', color: '#d69e2e' },

src/hooks/useAccessRules.tsx:25

  • Text: 'Gruppe'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'g', label: 'Gruppe', color: '#3182ce' },

src/hooks/useAccessRules.tsx:26

  • Text: 'Alle'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'a', label: 'Alle', color: '#38a169' },

src/hooks/useAccessRules.tsx:114

  • Text: 'Fehler beim Laden der Regeln'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMsg = err.response?.data?.detail || err.message || 'Fehler beim Laden der Regeln';

src/hooks/useAccessRules.tsx:197

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMsg = err.response?.data?.detail || err.message || 'Fehler beim Speichern';

src/hooks/useConfirm.tsx:6

  • Text: 'Wirklich löschen?'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * const ok = await confirm('Wirklich löschen?', { confirmLabel: 'Löschen', variant: 'danger' });

src/hooks/useConfirm.tsx:6

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * const ok = await confirm('Wirklich löschen?', { confirmLabel: 'Löschen', variant: 'danger' });

src/hooks/useConfirm.tsx:26

  • Text: 'Bestätigung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Bestätigung',

src/hooks/useConfirm.tsx:27

  • Text: 'Bestätigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: confirmLabel: 'Bestätigen',

src/hooks/useConfirm.tsx:78

  • Text: '1px solid var(--color-border, #333)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--color-border, #333)',

src/hooks/useConfirm.tsx:82

  • Text: '0 8px 32px rgba(0,0,0,0.4)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: boxShadow: '0 8px 32px rgba(0,0,0,0.4)',

src/hooks/useConfirm.tsx:105

  • Text: '1px solid var(--color-border, #444)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--color-border, #444)',

src/hooks/useInstancePermissions.tsx:117

  • Text: 'Verträge'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: * {canViewContracts && <NavLink to="contracts">Verträge</NavLink>}

src/hooks/useInstancePermissions.tsx:343

  • Text: 'Neuer Vertrag'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: * <Button>Neuer Vertrag</Button>

src/hooks/usePrompt.tsx:6

  • Text: 'Bitte Namen eingeben:'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * const value = await prompt('Bitte Namen eingeben:', { title: 'Umbenennen' });

src/hooks/usePrompt.tsx:85

  • Text: '1px solid var(--border-color, var(--color-border, #333))'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, var(--color-border, #333))',

src/hooks/usePrompt.tsx:89

  • Text: '0 8px 32px rgba(0,0,0,0.4)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: boxShadow: '0 8px 32px rgba(0,0,0,0.4)',

src/hooks/usePrompt.tsx:119

  • Text: '1px solid var(--border-color, var(--color-border, #ccc))'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, var(--color-border, #ccc))',

src/hooks/usePrompt.tsx:134

  • Text: '1px solid var(--color-border, #444)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--color-border, #444)',

src/layouts/FeatureLayout.tsx:21

  • Text: 'Lade Feature-Daten...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Lade Feature-Daten...</p>

src/layouts/FeatureLayout.tsx:37

  • Text: 'Zugriff nicht möglich'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2>Zugriff nicht möglich</h2>

src/layouts/FeatureLayout.tsx:81

  • Text: 'Die angeforderte Feature-Instanz existiert nicht oder Sie haben keinen Zugriff.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: message="Die angeforderte Feature-Instanz existiert nicht oder Sie haben keinen Zugriff."

src/layouts/MainLayout.tsx:63

  • Text: 'Navigation schliessen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Navigation schliessen"

src/layouts/MainLayout.tsx:72

  • Text: 'PowerOn'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: alt="PowerOn"

src/layouts/MainLayout.tsx:105

  • Text: 'Navigation oeffnen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Navigation oeffnen"

src/layouts/MainLayout.tsx:111

  • Text: 'PowerOn'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: alt="PowerOn"

src/pages/AutomationsDashboardPage.tsx:71

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/pages/AutomationsDashboardPage.tsx:78

  • Text: '1 1 180px'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: flex: '1 1 180px',

src/pages/AutomationsDashboardPage.tsx:195

  • Text: ''
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: '',

src/pages/Dashboard.tsx:72

  • Text: 'Übersicht'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1>Übersicht</h1>

src/pages/Dashboard.tsx:82

  • Text: 'Übersicht'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1>Übersicht</h1>

src/pages/FeatureView.tsx:67

  • Text: 'Workflow Dashboard'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <PlaceholderView title="Workflow Dashboard" description="Übersicht der Workflows" />

src/pages/FeatureView.tsx:67

  • Text: 'Übersicht der Workflows'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <PlaceholderView title="Workflow Dashboard" description="Übersicht der Workflows" />

src/pages/FeatureView.tsx:71

  • Text: 'Runs'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <PlaceholderView title="Runs" description="Workflow-Ausführungen" />

src/pages/FeatureView.tsx:71

  • Text: 'Workflow-Ausführungen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <PlaceholderView title="Runs" description="Workflow-Ausführungen" />

src/pages/FeatureView.tsx:75

  • Text: 'Dateien'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <PlaceholderView title="Dateien" description="Workflow-Dateien" />

src/pages/FeatureView.tsx:82

  • Text: 'Chatbot Einstellungen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <PlaceholderView title="Chatbot Einstellungen" description="Konfiguration des Chatbots" />

src/pages/FeatureView.tsx:82

  • Text: 'Konfiguration des Chatbots'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <PlaceholderView title="Chatbot Einstellungen" description="Konfiguration des Chatbots" />

src/pages/FeatureView.tsx:88

  • Text: 'Seite nicht gefunden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2>Seite nicht gefunden</h2>

src/pages/FeatureView.tsx:89

  • Text: 'Diese View existiert nicht oder wurde noch nicht implementiert.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Diese View existiert nicht oder wurde noch nicht implementiert.</p>

src/pages/FeatureView.tsx:95

  • Text: 'Zugriff verweigert'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2>Zugriff verweigert</h2>

src/pages/FeatureView.tsx:96

  • Text: 'Du hast keine Berechtigung für diese Ansicht.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Du hast keine Berechtigung für diese Ansicht.</p>

src/pages/GDPR.tsx:68

  • Text: 'Consent information could not be loaded.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setConsentError('Consent information could not be loaded.');

src/pages/GDPR.tsx:91

  • Text: 'Data export downloaded.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionMessage({ type: 'success', text: 'Data export downloaded.' });

src/pages/GDPR.tsx:94

  • Text: 'Data export failed. Please try again.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionMessage({ type: 'error', text: 'Data export failed. Please try again.' });

src/pages/GDPR.tsx:109

  • Text: 'Portable export downloaded.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionMessage({ type: 'success', text: 'Portable export downloaded.' });

src/pages/GDPR.tsx:112

  • Text: 'Portable export failed. Please try again.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionMessage({ type: 'error', text: 'Portable export failed. Please try again.' });

src/pages/GDPR.tsx:121

  • Text: 'Please type LOESCHEN to confirm deletion.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionMessage({ type: 'error', text: 'Please type LOESCHEN to confirm deletion.' });

src/pages/GDPR.tsx:132

  • Text: 'Account deleted. Redirecting to login...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionMessage({ type: 'success', text: 'Account deleted. Redirecting to login...' });

src/pages/GDPR.tsx:136

  • Text: 'Account deletion failed. Please try again.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionMessage({ type: 'error', text: 'Account deletion failed. Please try again.' });

src/pages/GDPR.tsx:161

  • Text: 'Your data rights'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>Your data rights</h2>

src/pages/GDPR.tsx:164

  • Text: 'Access (Article 15)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Access (Article 15)</h3>

src/pages/GDPR.tsx:165

  • Text: 'Download a full export of your account data.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Download a full export of your account data.</p>

src/pages/GDPR.tsx:186

  • Text: 'Portability (Article 20)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Portability (Article 20)</h3>

src/pages/GDPR.tsx:187

  • Text: 'Download a machine-readable JSON-LD export.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Download a machine-readable JSON-LD export.</p>

src/pages/GDPR.tsx:208

  • Text: 'Erasure (Article 17)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Erasure (Article 17)</h3>

src/pages/GDPR.tsx:209

  • Text: 'Permanently delete your account and all associated data.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Permanently delete your account and all associated data.</p>

src/pages/GDPR.tsx:229

  • Text: 'LOESCHEN'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="LOESCHEN"

src/pages/GDPR.tsx:278

  • Text: 'Processing information'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>Processing information</h2>

src/pages/GDPR.tsx:279

  • Text: 'Loading consent info...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {isLoadingConsent && <p className={styles.mutedText}>Loading consent info...</p>}

src/pages/GDPR.tsx:284

  • Text: 'Data collected'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Data collected</h3>

src/pages/GDPR.tsx:304

  • Text: 'Your rights'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Your rights</h3>

src/pages/InvitePage.tsx:16

  • Text: 'Einladung annehmen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * 6. User clicks "Einladung annehmen"

src/pages/InvitePage.tsx:56

  • Text: 'Kein Einladungs-Token angegeben'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Kein Einladungs-Token angegeben');

src/pages/InvitePage.tsx:71

  • Text: 'Neues Konto erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // No targetUsername = new-user invitation (email only) -> only show "Neues Konto erstellen"

src/pages/InvitePage.tsx:120

  • Text: 'Not authenticated'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: } else if (result.error?.includes('401') || result.error?.includes('Not authenticated')) {

src/pages/InvitePage.tsx:125

  • Text: 'Fehler beim Annehmen der Einladung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(result.error || 'Fehler beim Annehmen der Einladung');

src/pages/InvitePage.tsx:162

  • Text: 'Einladung wird überprüft...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Einladung wird überprüft...</p>

src/pages/InvitePage.tsx:176

  • Text: 'Ungültige Einladung'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1>Ungültige Einladung</h1>

src/pages/InvitePage.tsx:177

  • Text: 'Diese Einladung ist nicht gültig.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <p>{validation?.reason || 'Diese Einladung ist nicht gültig.'}</p>

src/pages/InvitePage.tsx:195

  • Text: 'Sie wurden erfolgreich zum Mandanten hinzugefügt.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Sie wurden erfolgreich zum Mandanten hinzugefügt.</p>

src/pages/InvitePage.tsx:196

  • Text: 'Sie werden weitergeleitet...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.redirectMessage}>Sie werden weitergeleitet...</p>

src/pages/InvitePage.tsx:211

  • Text: 'Falsche Anmeldung'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1>Falsche Anmeldung</h1>

src/pages/InvitePage.tsx:214

  • Text: 'anderer Benutzer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: Sie sind als <strong>{cachedUser?.username || 'anderer Benutzer'}</strong> angemeldet.

src/pages/InvitePage.tsx:216

  • Text: 'Bitte melden Sie sich ab und mit dem richtigen Konto wieder an.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Bitte melden Sie sich ab und mit dem richtigen Konto wieder an.</p>

src/pages/InvitePage.tsx:229

  • Text: 'Sie wurden eingeladen, einem Mandanten und einem Feature beizutreten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Sie wurden eingeladen, einem Mandanten und einem Feature beizutreten.'

src/pages/InvitePage.tsx:230

  • Text: 'Sie wurden eingeladen, einem Mandanten beizutreten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Sie wurden eingeladen, einem Mandanten beizutreten.';

src/pages/InvitePage.tsx:231

  • Text: 'Features mit zugewiesenen Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const rolesLabel = isFeatureInvite ? 'Features mit zugewiesenen Rollen' : 'Zugewiesene Rollen';

src/pages/InvitePage.tsx:231

  • Text: 'Zugewiesene Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const rolesLabel = isFeatureInvite ? 'Features mit zugewiesenen Rollen' : 'Zugewiesene Rollen';

src/pages/InvitePage.tsx:241

  • Text: 'Einladung annehmen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1>Einladung annehmen</h1>

src/pages/InvitePage.tsx:287

  • Text: 'Einladung annehmen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Einladung annehmen'

src/pages/InvitePage.tsx:304

  • Text: 'Einladung annehmen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1>Einladung annehmen</h1>

src/pages/InvitePage.tsx:333

  • Text: 'Erstellen Sie ein neues Konto mit Ihrem Benutzernamen oder verlinken Sie die Einladung mit Ihrem bestehenden Account.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Erstellen Sie ein neues Konto mit Ihrem Benutzernamen oder verlinken Sie die Einladung mit Ihrem bestehenden Account.'}

src/pages/Login.tsx:36

  • Text: 'PowerOn AI Platform - Login'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: document.title = "PowerOn AI Platform - Login";

src/pages/Login.tsx:134

  • Text: 'PowerOn'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: alt="PowerOn"

src/pages/Login.tsx:145

  • Text: 'Sie haben eine ausstehende Einladung. Bitte melden Sie sich an, um diese anzunehmen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Sie haben eine ausstehende Einladung. Bitte melden Sie sich an, um diese anzunehmen.</span>

src/pages/Login.tsx:155

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/Login.tsx:173

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/Login.tsx:198

  • Text: 'wird geladen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoginLoading ? "wird geladen..." : "Anmelden"}

src/pages/Login.tsx:221

  • Text: 'Signing in...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isMsalLoading ? "Signing in..." : "Mit Microsoft anmelden"}

src/pages/Login.tsx:221

  • Text: 'Mit Microsoft anmelden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isMsalLoading ? "Signing in..." : "Mit Microsoft anmelden"}

src/pages/Login.tsx:232

  • Text: 'Signing in...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isGoogleLoading ? "Signing in..." : "Mit Google anmelden"}

src/pages/Login.tsx:232

  • Text: 'Mit Google anmelden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isGoogleLoading ? "Signing in..." : "Mit Google anmelden"}

src/pages/Login.tsx:237

  • Text: 'Du hast noch kein Konto?'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Du hast noch kein Konto?</span>

src/pages/PasswordResetRequest.tsx:18

  • Text: 'PowerOn AI Platform - Passwort zurücksetzen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: document.title = "PowerOn AI Platform - Passwort zurücksetzen";

src/pages/PasswordResetRequest.tsx:27

  • Text: 'Bitte geben Sie Ihren Benutzernamen ein.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Bitte geben Sie Ihren Benutzernamen ein.');

src/pages/PasswordResetRequest.tsx:33

  • 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.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 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.');

src/pages/PasswordResetRequest.tsx:40

  • Text: 'Bitte prüfen Sie Ihre E-Mail für den Passwort-Reset-Link.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: message: 'Bitte prüfen Sie Ihre E-Mail für den Passwort-Reset-Link.'

src/pages/PasswordResetRequest.tsx:46

  • 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.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 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.');

src/pages/PasswordResetRequest.tsx:59

  • Text: 'PowerOn'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: alt="PowerOn"

src/pages/PasswordResetRequest.tsx:65

  • Text: 'Passwort zurücksetzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.title}>Passwort zurücksetzen</h2>

src/pages/PasswordResetRequest.tsx:80

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/PasswordResetRequest.tsx:100

  • 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.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <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>

src/pages/PasswordResetRequest.tsx:108

  • Text: 'Wird gesendet...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? "Wird gesendet..." : "Reset-Link anfordern"}

src/pages/PasswordResetRequest.tsx:108

  • Text: 'Reset-Link anfordern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? "Wird gesendet..." : "Reset-Link anfordern"}

src/pages/PasswordResetRequest.tsx:114

  • Text: 'Zurück zum'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Zurück zum</span>

src/pages/Register.tsx:40

  • Text: 'PowerOn AI Platform - Registrieren'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: document.title = "PowerOn AI Platform - Registrieren";

src/pages/Register.tsx:58

  • Text: 'Bitte füllen Sie alle Pflichtfelder aus.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Bitte füllen Sie alle Pflichtfelder aus.');

src/pages/Register.tsx:63

  • Text: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Bitte geben Sie eine gültige E-Mail-Adresse ein.');

src/pages/Register.tsx:81

  • Text: 'Username is not available'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMessage = availabilityResult.message || 'Username is not available';

src/pages/Register.tsx:82

  • Text: 'Username is already taken'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (errorMessage === 'Username is already taken') {

src/pages/Register.tsx:83

  • Text: 'Benutzername ist bereits vergeben'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Benutzername ist bereits vergeben');

src/pages/Register.tsx:86

  • Text: 'Benutzername ist nicht verfügbar'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Benutzername ist nicht verfügbar');

src/pages/Register.tsx:93

  • Text: 'Registrierung erfolgreich! Bitte prüfen Sie Ihre E-Mail (auch den Spam-Ordner) für den Link zum Setzen Ihres Passworts.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: let message = 'Registrierung erfolgreich! Bitte prüfen Sie Ihre E-Mail (auch den Spam-Ordner) für den Link zum Setzen Ihres Passworts.';

src/pages/Register.tsx:95

  • Text: ' Nach dem Setzen Ihres Passworts können Sie sich anmelden und Ihre Einladung annehmen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: message += ' Nach dem Setzen Ihres Passworts können Sie sich anmelden und Ihre Einladung annehmen.';

src/pages/Register.tsx:104

  • Text: 'Registrierung erfolgreich. Bitte prüfen Sie Ihre E-Mail für den Passwort-Link.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: message: 'Registrierung erfolgreich. Bitte prüfen Sie Ihre E-Mail für den Passwort-Link.',

src/pages/Register.tsx:116

  • Text: 'Registration failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (registerError) return typeof registerError === 'string' ? registerError : 'Registration failed';

src/pages/Register.tsx:117

  • Text: 'Microsoft registration failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (msalError) return typeof msalError === 'string' ? msalError : 'Microsoft registration failed';

src/pages/Register.tsx:118

  • Text: 'Username availability check failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (availabilityError) return typeof availabilityError === 'string' ? availabilityError : 'Username availability check failed';

src/pages/Register.tsx:128

  • Text: 'PowerOn'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: alt="PowerOn"

src/pages/Register.tsx:138

  • Text: 'Sie haben eine ausstehende Einladung. Nach der Registrierung und Anmeldung können Sie diese annehmen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Sie haben eine ausstehende Einladung. Nach der Registrierung und Anmeldung können Sie diese annehmen.</span>

src/pages/Register.tsx:156

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/Register.tsx:170

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/Register.tsx:184

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/Register.tsx:191

  • Text: 'Vollständiger Name'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={fullNameFocused || formData.fullName ? styles.focusedLabel : styles.label}>Vollständiger Name</label>

src/pages/Register.tsx:195

  • Text: 'Nach der Registrierung erhalten Sie eine E-Mail mit einem Link zum Setzen Ihres Passworts.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Nach der Registrierung erhalten Sie eine E-Mail mit einem Link zum Setzen Ihres Passworts.</p>

src/pages/Register.tsx:209

  • Text: 'Registrierung läuft...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? "Registrierung läuft..." : isChecking ? "Benutzername wird geprüft..." : 'Kostenlos registrieren'}

src/pages/Register.tsx:209

  • Text: 'Benutzername wird geprüft...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? "Registrierung läuft..." : isChecking ? "Benutzername wird geprüft..." : 'Kostenlos registrieren'}

src/pages/Register.tsx:209

  • Text: 'Kostenlos registrieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? "Registrierung läuft..." : isChecking ? "Benutzername wird geprüft..." : 'Kostenlos registrieren'}

src/pages/Register.tsx:215

  • Text: 'Bereits registriert?'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Bereits registriert?</span>

src/pages/Reset.tsx:26

  • Text: 'PowerOn AI Platform - Neues Passwort setzen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: document.title = "PowerOn AI Platform - Neues Passwort setzen";

src/pages/Reset.tsx:31

  • Text: 'Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setTokenError('Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.');

src/pages/Reset.tsx:33

  • Text: 'Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setTokenError('Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.');

src/pages/Reset.tsx:44

  • Text: 'Passwort muss mindestens 8 Zeichen lang sein.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Passwort muss mindestens 8 Zeichen lang sein.');

src/pages/Reset.tsx:49

  • Text: 'Die Passwörter stimmen nicht überein.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Die Passwörter stimmen nicht überein.');

src/pages/Reset.tsx:65

  • Text: 'Token fehlt. Bitte fordern Sie einen neuen Reset-Link an.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Token fehlt. Bitte fordern Sie einen neuen Reset-Link an.');

src/pages/Reset.tsx:71

  • Text: 'Passwort erfolgreich gesetzt! Sie werden zum Login weitergeleitet...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setSuccessMessage('Passwort erfolgreich gesetzt! Sie werden zum Login weitergeleitet...');

src/pages/Reset.tsx:78

  • Text: 'Passwort erfolgreich geändert. Bitte melden Sie sich an.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: message: 'Passwort erfolgreich geändert. Bitte melden Sie sich an.'

src/pages/Reset.tsx:84

  • Text: 'Passwort-Zurücksetzung fehlgeschlagen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMessage = err?.response?.data?.detail || err?.message || 'Passwort-Zurücksetzung fehlgeschlagen.';

src/pages/Reset.tsx:85

  • Text: 'Ungültig'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (errorMessage.includes('abgelaufen') || errorMessage.includes('expired') || errorMessage.includes('Ungültig') || errorMessage.includes('invalid')) {

src/pages/Reset.tsx:86

  • Text: 'Der Reset-Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen Link an.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setValidationError('Der Reset-Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen Link an.');

src/pages/Reset.tsx:101

  • Text: 'PowerOn'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: alt="PowerOn"

src/pages/Reset.tsx:107

  • Text: 'Neues Passwort setzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.title}>Neues Passwort setzen</h2>

src/pages/Reset.tsx:119

  • Text: 'oder zurück zum'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>oder zurück zum</span>

src/pages/Reset.tsx:141

  • Text: 'PowerOn'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: alt="PowerOn"

src/pages/Reset.tsx:147

  • Text: 'Neues Passwort setzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.title}>Neues Passwort setzen</h2>

src/pages/Reset.tsx:159

  • Text: 'Mindestens 8 Zeichen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.passwordHint}>Mindestens 8 Zeichen</div>

src/pages/Reset.tsx:163

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/Reset.tsx:174

  • Text: 'Neues Passwort'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={passwordFocused || password ? styles.focusedLabel : styles.label}>Neues Passwort</label>

src/pages/Reset.tsx:181

  • Text: ' '
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder=" "

src/pages/Reset.tsx:192

  • Text: 'Passwort bestätigen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={confirmPasswordFocused || confirmPassword ? styles.focusedLabel : styles.label}>Passwort bestätigen</label>

src/pages/Reset.tsx:200

  • Text: 'Wird gespeichert...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? "Wird gespeichert..." : "Passwort setzen"}

src/pages/Reset.tsx:200

  • Text: 'Passwort setzen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? "Wird gespeichert..." : "Passwort setzen"}

src/pages/Reset.tsx:206

  • Text: 'Zurück zum'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Zurück zum</span>

src/pages/Settings.tsx:23

  • Text: 'Profil'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'profile', label: 'Profil' },

src/pages/Settings.tsx:24

  • Text: 'Darstellung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'appearance', label: 'Darstellung' },

src/pages/Settings.tsx:25

  • Text: 'Stimme & Sprache'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'voice', label: 'Stimme & Sprache' },

src/pages/Settings.tsx:26

  • Text: 'Neutralisierung (lokal)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'neutralization', label: 'Neutralisierung (lokal)' },

src/pages/Settings.tsx:27

  • Text: 'Datenschutz'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'privacy', label: 'Datenschutz' },

src/pages/Settings.tsx:50

  • Text: 'Deutsch'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'de', label: 'Deutsch' },

src/pages/Settings.tsx:51

  • Text: 'English'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'en', label: 'English' },

src/pages/Settings.tsx:52

  • Text: 'Français'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'fr', label: 'Français' },

src/pages/Settings.tsx:56

  • Text: 'Vollstaendiger Name'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'fullName', type: 'string', label: 'Vollstaendiger Name', description: 'Ihr vollstaendiger Name', required: false, placeholder: 'Max Mustermann' },

src/pages/Settings.tsx:56

  • Text: 'Ihr vollstaendiger Name'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { name: 'fullName', type: 'string', label: 'Vollstaendiger Name', description: 'Ihr vollstaendiger Name', required: false, placeholder: 'Max Mustermann' },

src/pages/Settings.tsx:56

  • Text: 'Max Mustermann'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { name: 'fullName', type: 'string', label: 'Vollstaendiger Name', description: 'Ihr vollstaendiger Name', required: false, placeholder: 'Max Mustermann' },

src/pages/Settings.tsx:57

  • Text: 'E-Mail-Adresse'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'email', type: 'email', label: 'E-Mail-Adresse', description: 'Ihre E-Mail-Adresse fuer Benachrichtigungen', required: true, placeholder: 'name@example.com' },

src/pages/Settings.tsx:57

  • Text: 'Ihre E-Mail-Adresse fuer Benachrichtigungen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { name: 'email', type: 'email', label: 'E-Mail-Adresse', description: 'Ihre E-Mail-Adresse fuer Benachrichtigungen', required: true, placeholder: 'name@example.com' },

src/pages/Settings.tsx:58

  • Text: 'Sprache'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'language', type: 'select', label: 'Sprache', description: 'Anzeigesprache der Anwendung', required: true, options: languageOptions },

src/pages/Settings.tsx:58

  • Text: 'Anzeigesprache der Anwendung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { name: 'language', type: 'select', label: 'Sprache', description: 'Anzeigesprache der Anwendung', required: true, options: languageOptions },

src/pages/Settings.tsx:68

  • Text: 'Fehler beim Speichern des Profils'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Speichern des Profils');

src/pages/Settings.tsx:80

  • Text: 'Profil bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2>Profil bearbeiten</h2>

src/pages/Settings.tsx:137

  • Text: 'Fehler beim Laden der Voice-Einstellungen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Laden der Voice-Einstellungen');

src/pages/Settings.tsx:184

  • Text: 'Einstellungen gespeichert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setSuccess('Einstellungen gespeichert');

src/pages/Settings.tsx:188

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Speichern');

src/pages/Settings.tsx:206

  • Text: 'Stimmtest fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: } catch { setError('Stimmtest fehlgeschlagen'); }

src/pages/Settings.tsx:216

  • Text: 'English (US)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { code: 'de-DE', name: 'Deutsch' }, { code: 'en-US', name: 'English (US)' },

src/pages/Settings.tsx:230

  • Text: 'STT-Sprache (Spracheingabe)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>STT-Sprache (Spracheingabe)</h2>

src/pages/Settings.tsx:233

  • Text: 'Sprache fuer Spracherkennung'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.settingLabel}>Sprache fuer Spracherkennung</label>

src/pages/Settings.tsx:234

  • Text: 'Wird fuer die Sprache-zu-Text-Erkennung verwendet.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.settingDescription}>Wird fuer die Sprache-zu-Text-Erkennung verwendet.</p>

src/pages/Settings.tsx:247

  • Text: 'TTS-Stimmen (Sprachausgabe)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>TTS-Stimmen (Sprachausgabe)</h2>

src/pages/Settings.tsx:304

  • Text: 'Einstellungen speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {saving ? 'Speichern...' : 'Einstellungen speichern'}

src/pages/Settings.tsx:342

  • Text: 'Fehler beim Laden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Laden');

src/pages/Settings.tsx:355

  • Text: 'Fehler beim Loeschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Loeschen');

src/pages/Settings.tsx:371

  • Text: 'Platzhalter-Mappings (lokal)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>Platzhalter-Mappings (lokal)</h2>

src/pages/Settings.tsx:377

  • Text: '1px solid var(--border-color, #bfdbfe)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #bfdbfe)',

src/pages/Settings.tsx:385

  • Text: 'Mandant → AI-Workspace-Instanz → Einstellungen → Tab „Neutralisierung“'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>Mandant → AI-Workspace-Instanz → Einstellungen → Tab „Neutralisierung“</strong> (nicht auf dieser

src/pages/Settings.tsx:470

  • Text: 'Sprache konnte nicht gespeichert werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: } catch { setLanguageError('Sprache konnte nicht gespeichert werden'); }

src/pages/Settings.tsx:475

  • Text: 'Nicht angemeldet'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (!currentUser?.id || !currentUser?.username) throw new Error('Nicht angemeldet');

src/pages/Settings.tsx:489

  • Text: 'Persoenliche Einstellungen und Praeferenzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.subtitle}>Persoenliche Einstellungen und Praeferenzen</p>

src/pages/Settings.tsx:511

  • Text: 'Profil bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.settingLabel}>Profil bearbeiten</label>

src/pages/Settings.tsx:512

  • Text: 'Aendern Sie Ihren Namen und Ihre E-Mail-Adresse.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.settingDescription}>Aendern Sie Ihren Namen und Ihre E-Mail-Adresse.</p>

src/pages/Settings.tsx:540

  • Text: 'Waehlen Sie zwischen hellem und dunklem Design.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.settingInfo}><label className={styles.settingLabel}>Theme</label><p className={styles.settingDescription}>Waehlen Sie zwischen hellem und dunklem Design.</p></div>

src/pages/Settings.tsx:555

  • Text: 'Deutsch'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'de', label: 'Deutsch' },

src/pages/Settings.tsx:556

  • Text: 'English'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'en', label: 'English' },

src/pages/Settings.tsx:557

  • Text: 'Français'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'fr', label: 'Français' },

src/pages/Settings.tsx:584

  • Text: 'GDPR / Privacy'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.settingInfo}><label className={styles.settingLabel}>GDPR / Privacy</label><p className={styles.settingDescription}>Datenexport, Portabilität und Kontolöschung.</p></div>

src/pages/Settings.tsx:584

  • Text: 'Datenexport, Portabilität und Kontolöschung.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.settingInfo}><label className={styles.settingLabel}>GDPR / Privacy</label><p className={styles.settingDescription}>Datenexport, Portabilität und Kontolöschung.</p></div>

src/pages/Settings.tsx:585

  • Text: 'GDPR öffnen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.settingControl}><Link className={${styles.button} ${styles.linkButton}} to="/gdpr">GDPR öffnen</Link></div>

src/pages/Store.tsx:25

  • Text: 'Erstelle und verwalte Automatisierungen, um wiederkehrende Aufgaben effizient zu erledigen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: de: 'Erstelle und verwalte Automatisierungen, um wiederkehrende Aufgaben effizient zu erledigen.',

src/pages/Store.tsx:26

  • Text: 'Create and manage automations to handle recurring tasks efficiently.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: en: 'Create and manage automations to handle recurring tasks efficiently.',

src/pages/Store.tsx:27

  • Text: 'Creer et gerer des automatisations pour traiter efficacement les taches recurrentes.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fr: 'Creer et gerer des automatisations pour traiter efficacement les taches recurrentes.',

src/pages/Store.tsx:30

  • Text: 'n8n-style Flow-Automatisierung mit grafischem Editor, RAG und Tools.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: de: 'n8n-style Flow-Automatisierung mit grafischem Editor, RAG und Tools.',

src/pages/Store.tsx:31

  • Text: 'n8n-style flow automation with visual editor, RAG and tools.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: en: 'n8n-style flow automation with visual editor, RAG and tools.',

src/pages/Store.tsx:32

  • Text: 'Automatisation de flux style n8n avec editeur visuel, RAG et outils.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fr: 'Automatisation de flux style n8n avec editeur visuel, RAG et outils.',

src/pages/Store.tsx:35

  • Text: 'Integriere einen AI-Bot in deine Microsoft Teams Meetings und Channels.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: de: 'Integriere einen AI-Bot in deine Microsoft Teams Meetings und Channels.',

src/pages/Store.tsx:36

  • Text: 'Integrate an AI bot into your Microsoft Teams meetings and channels.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: en: 'Integrate an AI bot into your Microsoft Teams meetings and channels.',

src/pages/Store.tsx:37

  • Text: 'Integrez un bot IA dans vos reunions et canaux Microsoft Teams.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fr: 'Integrez un bot IA dans vos reunions et canaux Microsoft Teams.',

src/pages/Store.tsx:40

  • Text: 'Nutze den gemeinsamen AI Workspace: Chats, Tools und Kontext pro Instanz.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: de: 'Nutze den gemeinsamen AI Workspace: Chats, Tools und Kontext pro Instanz.',

src/pages/Store.tsx:41

  • Text: 'Use the shared AI workspace: chats, tools, and context per instance.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: en: 'Use the shared AI workspace: chats, tools, and context per instance.',

src/pages/Store.tsx:42

  • Text: "Utilisez l'espace de travail IA partage: chats, outils et contexte par instance."
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fr: 'Utilisez l\'espace de travail IA partage: chats, outils et contexte par instance.',

src/pages/Store.tsx:45

  • Text: 'CommCoach: Kommunikation trainieren mit KI-gestütztem Coaching und Feedback.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: de: 'CommCoach: Kommunikation trainieren mit KI-gestütztem Coaching und Feedback.',

src/pages/Store.tsx:46

  • Text: 'CommCoach: practice communication with AI-assisted coaching and feedback.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: en: 'CommCoach: practice communication with AI-assisted coaching and feedback.',

src/pages/Store.tsx:47

  • Text: 'CommCoach: entrainer la communication avec un coaching assiste par IA.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fr: 'CommCoach: entrainer la communication avec un coaching assiste par IA.',

src/pages/Store.tsx:140

  • Text: 'Wird aktiviert...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? (language === 'de' ? 'Wird aktiviert...' : 'Activating...')

src/pages/Store.tsx:160

  • Text: 'Feature Store'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <h1>{currentLanguage === 'de' ? 'Feature Store' : currentLanguage === 'fr' ? 'Feature Store' : 'Feature Store'}</h1>

src/pages/Store.tsx:163

  • Text: 'Aktiviere Features fuer dein Konto. Deine Daten sind isoliert und nur fuer dich sichtbar.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Aktiviere Features fuer dein Konto. Deine Daten sind isoliert und nur fuer dich sichtbar.'

src/pages/Store.tsx:165

  • Text: 'Activez des fonctionnalites pour votre compte. Vos donnees sont isolees et visibles uniquement par vous.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Activez des fonctionnalites pour votre compte. Vos donnees sont isolees et visibles uniquement par vous.'

src/pages/Store.tsx:166

  • Text: 'Activate features for your account. Your data is isolated and only visible to you.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Activate features for your account. Your data is isolated and only visible to you.'}

src/pages/Store.tsx:186

  • Text: 'AI budget'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {currentLanguage === 'de' ? 'AI-Budget' : 'AI budget'}: {subscriptionInfo.budgetAiCHF} CHF

src/pages/Store.tsx:191

  • Text: 'Trial endet'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {currentLanguage === 'de' ? 'Trial endet' : 'Trial ends'}: {new Date(subscriptionInfo.trialEndsAt).toLocaleDateString()}

src/pages/Store.tsx:191

  • Text: 'Trial ends'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {currentLanguage === 'de' ? 'Trial endet' : 'Trial ends'}: {new Date(subscriptionInfo.trialEndsAt).toLocaleDateString()}

src/pages/Store.tsx:201

  • Text: 'Lade Features...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {currentLanguage === 'de' ? 'Lade Features...' : 'Loading features...'}

src/pages/Store.tsx:201

  • Text: 'Loading features...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {currentLanguage === 'de' ? 'Lade Features...' : 'Loading features...'}

src/pages/Store.tsx:206

  • Text: 'Keine Features im Store verfuegbar.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Keine Features im Store verfuegbar.'

src/pages/Store.tsx:207

  • Text: 'No features available in the store.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'No features available in the store.'}

src/pages/admin/AccessManagementHub.tsx:147

  • Text: 'Rollen synchronisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Rollen synchronisiert',

src/pages/admin/AccessManagementHub.tsx:152

  • Text: 'Synchronisierung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren');

src/pages/admin/AccessManagementHub.tsx:152

  • Text: 'Fehler beim Synchronisieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren');

src/pages/admin/AccessManagementHub.tsx:155

  • Text: 'Rollen konnten nicht synchronisiert werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'Rollen konnten nicht synchronisiert werden');

src/pages/admin/AccessManagementHub.tsx:308

  • Text: 'Fehler: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler: {error}</p>

src/pages/admin/AccessManagementHub.tsx:342

  • Text: '-- Mandant wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant wählen --</option>

src/pages/admin/AccessManagementHub.tsx:431

  • Text: 'Kein Mandant ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>

src/pages/admin/AccessManagementHub.tsx:463

  • Text: 'Rollen (max)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={hubStyles.statsLabel}>Rollen (max)</span>

src/pages/admin/AccessManagementHub.tsx:496

  • Text: 'Lade Instanzen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Instanzen...</span>

src/pages/admin/AccessManagementHub.tsx:501

  • Text: 'Keine Feature-Instanzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Keine Feature-Instanzen</h3>

src/pages/admin/AccessManagementHub.tsx:526

  • Text: 'f.code === inst.featureCode) || { code: inst.featureCode, label: inst.featureCode })}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>{getFeatureLabel(features.find((f) => f.code === inst.featureCode) || { code: inst.featureCode, label: inst.featureCode })}</span>

src/pages/admin/AccessManagementHub.tsx:543

  • Text: 'Rollen synchronisieren'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Rollen synchronisieren"

src/pages/admin/AdminFeatureAccessPage.tsx:87

  • Text: 'Name'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'label', label: 'Name', type: 'string' as const, sortable: true, filterable: true, searchable: true, width: 200 },

src/pages/admin/AdminFeatureAccessPage.tsx:88

  • Text: 'Feature'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'featureCode', label: 'Feature', type: 'string' as const, sortable: true, filterable: true, width: 150,

src/pages/admin/AdminFeatureAccessPage.tsx:100

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'enabled', label: 'Aktiv', type: 'boolean' as const, sortable: true, filterable: true, width: 80 },

src/pages/admin/AdminFeatureAccessPage.tsx:123

  • Text: 'Label ist erforderlich.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'Label ist erforderlich.');

src/pages/admin/AdminFeatureAccessPage.tsx:133

  • Text: 'System Prompt ist erforderlich für Chatbot-Instanzen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'System Prompt ist erforderlich für Chatbot-Instanzen.');

src/pages/admin/AdminFeatureAccessPage.tsx:177

  • Text: 'Feature-Instanz erstellt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Feature-Instanz erstellt',Die Instanz "${createLabel}" wurde erfolgreich erstellt.);

src/pages/admin/AdminFeatureAccessPage.tsx:179

  • Text: 'Fehler beim Erstellen der Feature-Instanz'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Erstellen der Feature-Instanz');

src/pages/admin/AdminFeatureAccessPage.tsx:229

  • Text: 'System Prompt ist erforderlich für Chatbot-Instanzen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'System Prompt ist erforderlich für Chatbot-Instanzen.');

src/pages/admin/AdminFeatureAccessPage.tsx:271

  • Text: 'Feature-Instanz aktualisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Feature-Instanz aktualisiert',Die Instanz "${data.label}" wurde erfolgreich aktualisiert.);

src/pages/admin/AdminFeatureAccessPage.tsx:273

  • Text: 'Fehler beim Aktualisieren der Feature-Instanz'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Aktualisieren der Feature-Instanz');

src/pages/admin/AdminFeatureAccessPage.tsx:286

  • Text: 'Instanz gelöscht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Instanz gelöscht', 'Die Feature-Instanz wurde gelöscht.');

src/pages/admin/AdminFeatureAccessPage.tsx:286

  • Text: 'Die Feature-Instanz wurde gelöscht.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Instanz gelöscht', 'Die Feature-Instanz wurde gelöscht.');

src/pages/admin/AdminFeatureAccessPage.tsx:289

  • Text: 'Fehler beim Löschen der Feature-Instanz'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Löschen der Feature-Instanz');

src/pages/admin/AdminFeatureAccessPage.tsx:302

  • Text: 'Rollen synchronisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Rollen synchronisiert',

src/pages/admin/AdminFeatureAccessPage.tsx:306

  • Text: 'Synchronisierung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren der Rollen');

src/pages/admin/AdminFeatureAccessPage.tsx:306

  • Text: 'Fehler beim Synchronisieren der Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren der Rollen');

src/pages/admin/AdminFeatureAccessPage.tsx:338

  • Text: 'Fehler: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler: {error}</p>

src/pages/admin/AdminFeatureAccessPage.tsx:352

  • Text: 'Verwalten Sie Feature-Instanzen für jeden Mandanten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Verwalten Sie Feature-Instanzen für jeden Mandanten</p>

src/pages/admin/AdminFeatureAccessPage.tsx:368

  • Text: '-- Mandant wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant wählen --</option>

src/pages/admin/AdminFeatureAccessPage.tsx:390

  • Text: 'Keine Features verfügbar. Bitte laden Sie die Seite neu oder prüfen Sie die Konsole auf Fehler.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={features.length === 0 ? 'Keine Features verfügbar. Bitte laden Sie die Seite neu oder prüfen Sie die Konsole auf Fehler.' : undefined}

src/pages/admin/AdminFeatureAccessPage.tsx:402

  • Text: 'Verfügbare Features:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Verfügbare Features: </span>

src/pages/admin/AdminFeatureAccessPage.tsx:415

  • Text: ' Die API hat keine Features zurückgegeben.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {error ? Fehler: ${error} : ' Die API hat keine Features zurückgegeben.'}

src/pages/admin/AdminFeatureAccessPage.tsx:432

  • Text: 'Kein Mandant ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>

src/pages/admin/AdminFeatureAccessPage.tsx:453

  • Text: 'Instanz löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Instanz löschen',

src/pages/admin/AdminFeatureAccessPage.tsx:461

  • Text: 'Instanz bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Instanz bearbeiten',

src/pages/admin/AdminFeatureAccessPage.tsx:467

  • Text: 'Rollen synchronisieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Rollen synchronisieren',

src/pages/admin/AdminFeatureAccessPage.tsx:477

  • Text: 'Keine Feature-Instanzen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Feature-Instanzen gefunden"

src/pages/admin/AdminFeatureAccessPage.tsx:487

  • Text: 'Neue Feature-Instanz erstellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neue Feature-Instanz erstellen</h2>

src/pages/admin/AdminFeatureAccessPage.tsx:497

  • Text: 'Keine Features verfügbar. Bitte wenden Sie sich an den System-Administrator.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Features verfügbar. Bitte wenden Sie sich an den System-Administrator.</p>

src/pages/admin/AdminFeatureAccessPage.tsx:501

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/AdminFeatureAccessPage.tsx:528

  • Text: 'Feature auswählen (erforderlich)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Feature auswählen (erforderlich)"

src/pages/admin/AdminFeatureAccessPage.tsx:555

  • Text: 'Instanz-Bezeichnung eingeben...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Instanz-Bezeichnung eingeben..."

src/pages/admin/AdminFeatureAccessPage.tsx:611

  • Text: 'Feature-Instanz bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Feature-Instanz bearbeiten</h2>

src/pages/admin/AdminFeatureAccessPage.tsx:625

  • Text: 'Bezeichnung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Bezeichnung',

src/pages/admin/AdminFeatureAccessPage.tsx:632

  • Text: 'Aktiviert'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Aktiviert',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:201

  • Text: 'Benutzername'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Benutzername',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:210

  • Text: 'E-Mail'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'E-Mail',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:219

  • Text: 'Vollständiger Name'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Vollständiger Name',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:228

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:241

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Aktiv',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:268

  • Text: 'Benutzer'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Benutzer',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:275

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:288

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:295

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Aktiv',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:312

  • Text: 'Benutzer hinzugefügt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde erfolgreich zur Feature-Instanz hinzugefügt.');

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:312

  • Text: 'Der Benutzer wurde erfolgreich zur Feature-Instanz hinzugefügt.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde erfolgreich zur Feature-Instanz hinzugefügt.');

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:314

  • Text: 'Fehler beim Hinzufügen des Benutzers'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Hinzufügen des Benutzers');

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:336

  • Text: 'Eintrag aktualisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Eintrag aktualisiert', 'Rollen und Aktiv-Status wurden erfolgreich aktualisiert.');

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:336

  • Text: 'Rollen und Aktiv-Status wurden erfolgreich aktualisiert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Eintrag aktualisiert', 'Rollen und Aktiv-Status wurden erfolgreich aktualisiert.');

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:338

  • Text: 'Fehler beim Aktualisieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Aktualisieren');

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:352

  • Text: 'Benutzer entfernt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Benutzer entfernt',"${user.username}" wurde aus der Feature-Instanz entfernt.);

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:354

  • Text: 'Fehler beim Entfernen des Benutzers'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Entfernen des Benutzers');

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:396

  • Text: 'Fehler: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler: {error}</p>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:409

  • Text: 'Feature Instanz Benutzer'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1 className={styles.pageTitle}>Feature Instanz Benutzer</h1>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:410

  • Text: 'Verwalten Sie Benutzerzugriffe auf Feature-Instanzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Verwalten Sie Benutzerzugriffe auf Feature-Instanzen</p>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:427

  • Text: '-- Mandant / Feature-Instanz wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant / Feature-Instanz wählen --</option>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:485

  • Text: 'Verfügbare Rollen:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Verfügbare Rollen: </span>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:499

  • Text: 'Diese Instanz hat noch keine Rollen. Bitte synchronisieren Sie die Rollen zuerst unter "Feature-Instanzen".'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Diese Instanz hat noch keine Rollen. Bitte synchronisieren Sie die Rollen zuerst unter "Feature-Instanzen".</span>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:507

  • Text: 'Keine Feature-Instanz ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Keine Feature-Instanz ausgewählt</h3>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:510

  • Text: 'Es gibt noch keine Feature-Instanzen. Erstellen Sie zuerst Feature-Instanzen unter "Feature-Instanzen".'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Es gibt noch keine Feature-Instanzen. Erstellen Sie zuerst Feature-Instanzen unter "Feature-Instanzen".'

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:511

  • Text: 'Wählen Sie eine Feature-Instanz aus, um deren Benutzer zu verwalten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Wählen Sie eine Feature-Instanz aus, um deren Benutzer zu verwalten.'}

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:531

  • Text: 'Rollen bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Rollen bearbeiten',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:535

  • Text: 'Aus Instanz entfernen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Aus Instanz entfernen',

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:552

  • Text: 'Keine Benutzer gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Benutzer gefunden"

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:562

  • Text: 'Benutzer zur Feature-Instanz hinzufügen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Benutzer zur Feature-Instanz hinzufügen</h2>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:572

  • Text: 'Alle Benutzer haben bereits Zugriff auf diese Feature-Instanz.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Alle Benutzer haben bereits Zugriff auf diese Feature-Instanz.</p>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:574

  • Text: 'Diese Feature-Instanz hat keine Rollen. Bitte synchronisieren Sie zuerst die Rollen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Diese Feature-Instanz hat keine Rollen. Bitte synchronisieren Sie zuerst die Rollen.</p>

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:581

  • Text: 'Hinzufügen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText="Hinzufügen"

src/pages/admin/AdminFeatureInstanceUsersPage.tsx:595

  • Text: 'Rollen bearbeiten: {editingUser.username}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Rollen bearbeiten: {editingUser.username}</h2>

src/pages/admin/AdminFeatureRolesPage.tsx:69

  • Text: 'Fehler beim Laden der Features'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Fehler beim Laden der Features');

src/pages/admin/AdminFeatureRolesPage.tsx:111

  • Text: 'Fehler beim Laden der Feature-Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Fehler beim Laden der Feature-Rollen');

src/pages/admin/AdminFeatureRolesPage.tsx:134

  • Text: 'Rollen-Label'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen-Label',

src/pages/admin/AdminFeatureRolesPage.tsx:143

  • Text: 'Beschreibung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Beschreibung',

src/pages/admin/AdminFeatureRolesPage.tsx:151

  • Text: 'Feature'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Feature',

src/pages/admin/AdminFeatureRolesPage.tsx:169

  • Text: 'Rollen-Label'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen-Label',

src/pages/admin/AdminFeatureRolesPage.tsx:172

  • Text: 'Eindeutiger Bezeichner der Rolle (z.B. trustee-admin)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: description: 'Eindeutiger Bezeichner der Rolle (z.B. trustee-admin)'

src/pages/admin/AdminFeatureRolesPage.tsx:176

  • Text: 'Beschreibung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Beschreibung',

src/pages/admin/AdminFeatureRolesPage.tsx:179

  • Text: 'Mehrsprachige Beschreibung der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: description: 'Mehrsprachige Beschreibung der Rolle'

src/pages/admin/AdminFeatureRolesPage.tsx:190

  • Text: 'Rollen-Label'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen-Label',

src/pages/admin/AdminFeatureRolesPage.tsx:194

  • Text: 'Eindeutiger Bezeichner der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: description: 'Eindeutiger Bezeichner der Rolle'

src/pages/admin/AdminFeatureRolesPage.tsx:198

  • Text: 'Beschreibung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Beschreibung',

src/pages/admin/AdminFeatureRolesPage.tsx:201

  • Text: 'Mehrsprachige Beschreibung der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: description: 'Mehrsprachige Beschreibung der Rolle'

src/pages/admin/AdminFeatureRolesPage.tsx:221

  • Text: 'Fehler beim Erstellen der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', err.response?.data?.detail || 'Fehler beim Erstellen der Rolle');

src/pages/admin/AdminFeatureRolesPage.tsx:240

  • Text: 'Fehler beim Aktualisieren der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', err.response?.data?.detail || 'Fehler beim Aktualisieren der Rolle');

src/pages/admin/AdminFeatureRolesPage.tsx:253

  • Text: 'Fehler beim Löschen der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', err.response?.data?.detail || 'Fehler beim Löschen der Rolle');

src/pages/admin/AdminFeatureRolesPage.tsx:283

  • Text: 'Feature Rollen & Rechte'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1 className={styles.pageTitle}>Feature Rollen & Rechte</h1>

src/pages/admin/AdminFeatureRolesPage.tsx:284

  • Text: 'Template-Rollen und deren Berechtigungen für Feature-Instanzen verwalten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Template-Rollen und deren Berechtigungen für Feature-Instanzen verwalten</p>

src/pages/admin/AdminFeatureRolesPage.tsx:300

  • Text: '-- Feature wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Feature wählen --</option>

src/pages/admin/AdminFeatureRolesPage.tsx:346

  • Text: 'Kein Feature ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Kein Feature ausgewählt</h3>

src/pages/admin/AdminFeatureRolesPage.tsx:368

  • Text: 'Rolle bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Rolle bearbeiten',

src/pages/admin/AdminFeatureRolesPage.tsx:372

  • Text: 'Rolle löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Rolle löschen',

src/pages/admin/AdminFeatureRolesPage.tsx:380

  • Text: 'Berechtigungen verwalten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Berechtigungen verwalten',

src/pages/admin/AdminFeatureRolesPage.tsx:389

  • Text: 'Keine Feature-Rollen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Feature-Rollen gefunden"

src/pages/admin/AdminFeatureRolesPage.tsx:399

  • Text: 'Neue Feature-Rolle erstellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neue Feature-Rolle erstellen</h2>

src/pages/admin/AdminFeatureRolesPage.tsx:417

  • Text: 'Rolle erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText={isSubmitting ? 'Erstelle...' : 'Rolle erstellen'}

src/pages/admin/AdminFeatureRolesPage.tsx:430

  • Text: 'Feature-Rolle bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Feature-Rolle bearbeiten</h2>

src/pages/admin/AdminInvitationsPage.tsx:86

  • Text: 'Benutzername'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Benutzername',

src/pages/admin/AdminInvitationsPage.tsx:95

  • Text: 'E-Mail'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'E-Mail',

src/pages/admin/AdminInvitationsPage.tsx:104

  • Text: 'Email wurde gesendet'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <span title={emailSent ? 'Email wurde gesendet' : 'Email nicht gesendet'}>

src/pages/admin/AdminInvitationsPage.tsx:104

  • Text: 'Email nicht gesendet'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <span title={emailSent ? 'Email wurde gesendet' : 'Email nicht gesendet'}>

src/pages/admin/AdminInvitationsPage.tsx:112

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/AdminInvitationsPage.tsx:127

  • Text: 'Gültig bis'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Gültig bis',

src/pages/admin/AdminInvitationsPage.tsx:143

  • Text: 'Verwendet'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Verwendet',

src/pages/admin/AdminInvitationsPage.tsx:151

  • Text: 'Erstellt'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Erstellt',

src/pages/admin/AdminInvitationsPage.tsx:177

  • Text: 'Gültigkeitsdauer (Stunden)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: fields.push({ name: 'expiresInHours', label: 'Gültigkeitsdauer (Stunden)', type: 'number',

src/pages/admin/AdminInvitationsPage.tsx:200

  • Text: 'Fehler beim Erstellen der Einladung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Erstellen der Einladung');

src/pages/admin/AdminInvitationsPage.tsx:213

  • Text: 'Fehler beim Widerrufen der Einladung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Widerrufen der Einladung');

src/pages/admin/AdminInvitationsPage.tsx:248

  • Text: 'Fehler: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler: {error}</p>

src/pages/admin/AdminInvitationsPage.tsx:262

  • Text: 'Erstellen und verwalten Sie Einladungen für neue Benutzer'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Erstellen und verwalten Sie Einladungen für neue Benutzer</p>

src/pages/admin/AdminInvitationsPage.tsx:278

  • Text: '-- Mandant wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant wählen --</option>

src/pages/admin/AdminInvitationsPage.tsx:329

  • Text: 'Kein Mandant ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>

src/pages/admin/AdminInvitationsPage.tsx:350

  • Text: 'Einladung widerrufen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Einladung widerrufen',

src/pages/admin/AdminInvitationsPage.tsx:358

  • Text: 'Einladungs-Link anzeigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Einladungs-Link anzeigen',

src/pages/admin/AdminInvitationsPage.tsx:366

  • Text: 'Keine Einladungen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Einladungen gefunden"

src/pages/admin/AdminInvitationsPage.tsx:376

  • Text: 'Neue Einladung erstellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neue Einladung erstellen</h2>

src/pages/admin/AdminInvitationsPage.tsx:388

  • Text: 'Lade Rollen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Rollen...</span>

src/pages/admin/AdminInvitationsPage.tsx:393

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/AdminInvitationsPage.tsx:401

  • Text: 'Einladung erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText="Einladung erstellen"

src/pages/admin/AdminInvitationsPage.tsx:438

  • Text: 'In Zwischenablage kopieren'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="In Zwischenablage kopieren"

src/pages/admin/AdminInvitationsPage.tsx:441

  • Text: ' Kopiert!'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {copySuccess ? ' Kopiert!' : ' Kopieren'}

src/pages/admin/AdminInvitationsPage.tsx:441

  • Text: ' Kopieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {copySuccess ? ' Kopiert!' : ' Kopieren'}

src/pages/admin/AdminLanguagesPage.tsx:22

  • Text: 'Code'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'id', label: 'Code', type: 'text', sortable: true, filterable: true, width: 90 },

src/pages/admin/AdminLanguagesPage.tsx:23

  • Text: 'Bezeichnung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'label', label: 'Bezeichnung', type: 'text', sortable: true, filterable: true, width: 160 },

src/pages/admin/AdminLanguagesPage.tsx:24

  • Text: 'Status'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'status', label: 'Status', type: 'text', sortable: true, filterable: true, width: 120 },

src/pages/admin/AdminLanguagesPage.tsx:25

  • Text: 'Keys'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'keysCount', label: 'Keys', type: 'number', sortable: true, width: 90 },

src/pages/admin/AdminLanguagesPage.tsx:29

  • Text: 'it — Italiano'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'it', label: 'it — Italiano' },

src/pages/admin/AdminLanguagesPage.tsx:30

  • Text: 'es — Español'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'es', label: 'es — Español' },

src/pages/admin/AdminLanguagesPage.tsx:31

  • Text: 'pt — Português'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'pt', label: 'pt — Português' },

src/pages/admin/AdminLanguagesPage.tsx:32

  • Text: 'nl — Nederlands'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'nl', label: 'nl — Nederlands' },

src/pages/admin/AdminLanguagesPage.tsx:33

  • Text: 'pl — Polski'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'pl', label: 'pl — Polski' },

src/pages/admin/AdminLanguagesPage.tsx:34

  • Text: 'cs — Čeština'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'cs', label: 'cs — Čeština' },

src/pages/admin/AdminLanguagesPage.tsx:35

  • Text: 'sk — Slovenčina'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'sk', label: 'sk — Slovenčina' },

src/pages/admin/AdminLanguagesPage.tsx:36

  • Text: 'sv — Svenska'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'sv', label: 'sv — Svenska' },

src/pages/admin/AdminLanguagesPage.tsx:37

  • Text: 'no — Norsk'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'no', label: 'no — Norsk' },

src/pages/admin/AdminLanguagesPage.tsx:38

  • Text: 'da — Dansk'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'da', label: 'da — Dansk' },

src/pages/admin/AdminLanguagesPage.tsx:65

  • Text: 'Laden fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(e.response?.data?.detail || e.message || 'Laden fehlgeschlagen');

src/pages/admin/AdminLogsPage.tsx:49

  • Text: 'Fehler beim Laden der Logs'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.response?.data?.detail || 'Fehler beim Laden der Logs');

src/pages/admin/AdminLogsPage.tsx:81

  • Text: 'Fehler beim Download'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.response?.data?.detail || 'Fehler beim Download');

src/pages/admin/AdminLogsPage.tsx:107

  • Text: 'Gateway Logs'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1 className={styles.pageTitle}>Gateway Logs</h1>

src/pages/admin/AdminLogsPage.tsx:111

  • Text: 'Keine Logs geladen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Keine Logs geladen'}

src/pages/admin/AdminLogsPage.tsx:112

  • Text: '— {logDir}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {logDir && <span className={logStyles.logDirHint}> — {logDir}</span>}

src/pages/admin/AdminLogsPage.tsx:120

  • Text: 'Log herunterladen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Log herunterladen"

src/pages/admin/AdminLogsPage.tsx:139

  • Text: 'Einträge'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={logStyles.controlLabel}>Einträge</label>

src/pages/admin/AdminLogsPage.tsx:182

  • Text: 'Keine Logs geladen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.emptyTitle}>Keine Logs geladen</p>

src/pages/admin/AdminLogsPage.tsx:191

  • Text: 'Logs werden geladen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Logs werden geladen...</span>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:14

  • Text: 'Cleanup Duplicates'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * Includes a "Cleanup Duplicates" tool to find and remove duplicate AccessRules.

src/pages/admin/AdminMandateRolePermissionsPage.tsx:180

  • Text: 'Fehler beim Laden der Duplikate'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setCleanupError(err?.response?.data?.detail || err?.message || 'Fehler beim Laden der Duplikate');

src/pages/admin/AdminMandateRolePermissionsPage.tsx:200

  • Text: 'Fehler beim Bereinigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setCleanupError(err?.response?.data?.detail || err?.message || 'Fehler beim Bereinigen');

src/pages/admin/AdminMandateRolePermissionsPage.tsx:215

  • Text: 'Mandanten-Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'mandate', label: 'Mandanten-Rollen' },

src/pages/admin/AdminMandateRolePermissionsPage.tsx:216

  • Text: 'Alle (inkl. Templates)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'all', label: 'Alle (inkl. Templates)' },

src/pages/admin/AdminMandateRolePermissionsPage.tsx:217

  • Text: 'Nur Templates'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'global', label: 'Nur Templates' },

src/pages/admin/AdminMandateRolePermissionsPage.tsx:225

  • Text: 'Fehler beim Laden: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden: {error}</p>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:252

  • Text: 'Doppelte Regeln finden und bereinigen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Doppelte Regeln finden und bereinigen"

src/pages/admin/AdminMandateRolePermissionsPage.tsx:313

  • Text: 'Lade Rollen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Rollen...</span>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:321

  • Text: 'Keine Rollen gefunden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Rollen gefunden</p>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:324

  • Text: 'Es gibt noch keine Mandanten-Rollen. System-Rollen werden bei der Mandant-Erstellung automatisch kopiert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Es gibt noch keine Mandanten-Rollen. System-Rollen werden bei der Mandant-Erstellung automatisch kopiert.'

src/pages/admin/AdminMandateRolePermissionsPage.tsx:326

  • Text: 'Es gibt noch keine Rollen-Templates.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Es gibt noch keine Rollen-Templates.'

src/pages/admin/AdminMandateRolePermissionsPage.tsx:327

  • Text: 'Es gibt noch keine Rollen für diesen Mandanten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Es gibt noch keine Rollen für diesen Mandanten.'}

src/pages/admin/AdminMandateRolePermissionsPage.tsx:402

  • Text: 'Analysiere Duplikate...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <span>{cleanupPhase === 'idle' ? 'Analysiere Duplikate...' : 'Bereinige Duplikate...'}</span>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:402

  • Text: 'Bereinige Duplikate...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <span>{cleanupPhase === 'idle' ? 'Analysiere Duplikate...' : 'Bereinige Duplikate...'}</span>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:436

  • Text: 'Zu loeschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {cleanupPhase === 'done' ? 'Geloescht' : 'Zu loeschen'}

src/pages/admin/AdminMandateRolePermissionsPage.tsx:445

  • Text: 'doppelte Regeln wurden erfolgreich entfernt.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span><strong>{cleanupResult.deletedCount}</strong> doppelte Regeln wurden erfolgreich entfernt.</span>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:452

  • Text: 'Keine Duplikate gefunden. Alles sauber!'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Keine Duplikate gefunden. Alles sauber!</span>

src/pages/admin/AdminMandateRolePermissionsPage.tsx:515

  • Text: 'Zu reparieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {cleanupPhase === 'done' ? 'Repariert' : 'Zu reparieren'}

src/pages/admin/AdminMandateRolePermissionsPage.tsx:566

  • Text: 'Keine fehlerhaften Template-Rollen-Zuweisungen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Keine fehlerhaften Template-Rollen-Zuweisungen.</span>

src/pages/admin/AdminMandateRolesPage.tsx:102

  • Text: 'Bezeichnung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Bezeichnung',

src/pages/admin/AdminMandateRolesPage.tsx:111

  • Text: 'Beschreibung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Beschreibung',

src/pages/admin/AdminMandateRolesPage.tsx:120

  • Text: 'Geltungsbereich'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Geltungsbereich',

src/pages/admin/AdminMandateRolesPage.tsx:161

  • Text: 'Geltungsbereich'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Geltungsbereich',

src/pages/admin/AdminMandateRolesPage.tsx:166

  • Text: 'Nur dieser Mandant'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'mandate', label: 'Nur dieser Mandant' },

src/pages/admin/AdminMandateRolesPage.tsx:167

  • Text: 'Template (wird bei neuen Mandanten kopiert)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 'global', label: 'Template (wird bei neuen Mandanten kopiert)' },

src/pages/admin/AdminMandateRolesPage.tsx:216

  • Text: 'Fehler beim Erstellen der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Erstellen der Rolle');

src/pages/admin/AdminMandateRolesPage.tsx:220

  • Text: 'Fehler beim Erstellen der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', err.message || 'Fehler beim Erstellen der Rolle');

src/pages/admin/AdminMandateRolesPage.tsx:255

  • Text: 'Fehler beim Aktualisieren der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Aktualisieren der Rolle');

src/pages/admin/AdminMandateRolesPage.tsx:259

  • Text: 'Fehler beim Aktualisieren der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', err.message || 'Fehler beim Aktualisieren der Rolle');

src/pages/admin/AdminMandateRolesPage.tsx:268

  • Text: 'Nicht erlaubt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Nicht erlaubt', 'System-Rollen können nicht gelöscht werden.');

src/pages/admin/AdminMandateRolesPage.tsx:268

  • Text: 'System-Rollen können nicht gelöscht werden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Nicht erlaubt', 'System-Rollen können nicht gelöscht werden.');

src/pages/admin/AdminMandateRolesPage.tsx:277

  • Text: 'Fehler beim Löschen der Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Löschen der Rolle');

src/pages/admin/AdminMandateRolesPage.tsx:300

  • Text: 'Fehler: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler: {error}</p>

src/pages/admin/AdminMandateRolesPage.tsx:314

  • Text: 'Verwalten Sie System-, globale und mandantenspezifische Rollen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Verwalten Sie System-, globale und mandantenspezifische Rollen</p>

src/pages/admin/AdminMandateRolesPage.tsx:346

  • Text: '-- Mandant wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant wählen --</option>

src/pages/admin/AdminMandateRolesPage.tsx:364

  • Text: 'Alle (inkl. Templates)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="all">Alle (inkl. Templates)</option>

src/pages/admin/AdminMandateRolesPage.tsx:365

  • Text: 'Nur Templates'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="global">Nur Templates</option>

src/pages/admin/AdminMandateRolesPage.tsx:404

  • Text: 'Kein Mandant ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>

src/pages/admin/AdminMandateRolesPage.tsx:426

  • Text: 'Rolle bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Rolle bearbeiten',

src/pages/admin/AdminMandateRolesPage.tsx:427

  • Text: 'System-Rollen können nicht bearbeitet werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: disabled: (row: Role) => row.isSystemRole ? { disabled: true, message: 'System-Rollen können nicht bearbeitet werden' } : false

src/pages/admin/AdminMandateRolesPage.tsx:431

  • Text: 'Rolle löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Rolle löschen',

src/pages/admin/AdminMandateRolesPage.tsx:432

  • Text: 'System-Rollen können nicht gelöscht werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: disabled: (row: Role) => row.isSystemRole ? { disabled: true, message: 'System-Rollen können nicht gelöscht werden' } : false

src/pages/admin/AdminMandateRolesPage.tsx:441

  • Text: 'Keine Rollen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Rollen gefunden"

src/pages/admin/AdminMandateRolesPage.tsx:451

  • Text: 'Neue Rolle erstellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neue Rolle erstellen</h2>

src/pages/admin/AdminMandateRolesPage.tsx:463

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/AdminMandateRolesPage.tsx:471

  • Text: 'Rolle erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText={isSubmitting ? 'Erstelle...' : 'Rolle erstellen'}

src/pages/admin/AdminMandateRolesPage.tsx:485

  • Text: 'Rolle bearbeiten: {editingRole.roleLabel}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Rolle bearbeiten: {editingRole.roleLabel}</h2>

src/pages/admin/AdminMandateRolesPage.tsx:497

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/AdminMandateRolesPage.tsx:504

  • Text: 'Template (global)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: Geltungsbereich: <strong>{editingRole.mandateId ? 'Mandanten-Instanz' : 'Template (global)'}</strong>

src/pages/admin/AdminMandatesPage.tsx:76

  • Text: 'Abrechnungseinstellungen konnten nicht geladen werden. Nur Mandantendaten sind sicher bearbeitbar.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Abrechnungseinstellungen konnten nicht geladen werden. Nur Mandantendaten sind sicher bearbeitbar.'

src/pages/admin/AdminMandatesPage.tsx:88

  • Text: 'Mandant inkl. Abrechnungseinstellungen gespeichert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Erstellt', 'Mandant inkl. Abrechnungseinstellungen gespeichert.');

src/pages/admin/AdminMandatesPage.tsx:92

  • Text: 'Mandant erstellt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Mandant erstellt',

src/pages/admin/AdminMandatesPage.tsx:93

  • Text: 'Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.'

src/pages/admin/AdminMandatesPage.tsx:108

  • Text: 'Mandant und Abrechnung aktualisiert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Gespeichert', 'Mandant und Abrechnung aktualisiert.');

src/pages/admin/AdminMandatesPage.tsx:111

  • Text: 'Teilweise gespeichert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Teilweise gespeichert', 'Mandant gespeichert, Abrechnung konnte nicht aktualisiert werden.');

src/pages/admin/AdminMandatesPage.tsx:111

  • Text: 'Mandant gespeichert, Abrechnung konnte nicht aktualisiert werden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Teilweise gespeichert', 'Mandant gespeichert, Abrechnung konnte nicht aktualisiert werden.');

src/pages/admin/AdminMandatesPage.tsx:123

  • Text: 'Mandant deaktivieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { title: 'Mandant deaktivieren', confirmLabel: 'Deaktivieren', variant: 'danger', placeholder: mandate.name },

src/pages/admin/AdminMandatesPage.tsx:127

  • Text: 'Der eingegebene Name stimmt nicht überein.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Abgebrochen', 'Der eingegebene Name stimmt nicht überein.');

src/pages/admin/AdminMandatesPage.tsx:135

  • Text: 'Nicht erlaubt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Nicht erlaubt', 'System-Mandanten können nicht gelöscht werden.');

src/pages/admin/AdminMandatesPage.tsx:135

  • Text: 'System-Mandanten können nicht gelöscht werden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Nicht erlaubt', 'System-Mandanten können nicht gelöscht werden.');

src/pages/admin/AdminMandatesPage.tsx:140

  • Text: 'Hard Delete (irreversibel)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { title: 'Hard Delete (irreversibel)', confirmLabel: 'Endgültig löschen', variant: 'danger', placeholder: mandate.name },

src/pages/admin/AdminMandatesPage.tsx:140

  • Text: 'Endgültig löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { title: 'Hard Delete (irreversibel)', confirmLabel: 'Endgültig löschen', variant: 'danger', placeholder: mandate.name },

src/pages/admin/AdminMandatesPage.tsx:144

  • Text: 'Der eingegebene Name stimmt nicht überein.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showWarning('Abgebrochen', 'Der eingegebene Name stimmt nicht überein.');

src/pages/admin/AdminMandatesPage.tsx:149

  • Text: 'Gelöscht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Gelöscht',Mandant "${mandate.name}" wurde endgültig gelöscht.);

src/pages/admin/AdminMandatesPage.tsx:158

  • Text: 'Fehler beim Laden der Mandanten: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Mandanten: {error}</p>

src/pages/admin/AdminMandatesPage.tsx:172

  • Text: 'Verwalten Sie alle Mandanten im System'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Verwalten Sie alle Mandanten im System</p>

src/pages/admin/AdminMandatesPage.tsx:220

  • Text: 'Deaktivieren (Soft-Delete)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Deaktivieren (Soft-Delete)',

src/pages/admin/AdminMandatesPage.tsx:222

  • Text: 'System-Mandanten können nicht gelöscht werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? { disabled: true, message: 'System-Mandanten können nicht gelöscht werden' }

src/pages/admin/AdminMandatesPage.tsx:230

  • Text: 'Hard Delete (irreversibel)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Hard Delete (irreversibel)',

src/pages/admin/AdminMandatesPage.tsx:232

  • Text: 'System-Mandanten können nicht gelöscht werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? { disabled: true, message: 'System-Mandanten können nicht gelöscht werden' }

src/pages/admin/AdminMandatesPage.tsx:244

  • Text: 'Keine Mandanten gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Mandanten gefunden"

src/pages/admin/AdminMandatesPage.tsx:253

  • Text: 'Neuer Mandant'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neuer Mandant</h2>

src/pages/admin/AdminMandatesPage.tsx:269

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/AdminMandatesPage.tsx:299

  • Text: 'Mandant bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Mandant bearbeiten</h2>

src/pages/admin/AdminMandatesPage.tsx:330

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/AdminUserAccessOverviewPage.tsx:105

  • Text: 'Failed to fetch users'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err?.response?.data?.detail || err?.message || 'Failed to fetch users');

src/pages/admin/AdminUserAccessOverviewPage.tsx:133

  • Text: 'Failed to fetch overview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err?.response?.data?.detail || err?.message || 'Failed to fetch overview');

src/pages/admin/AdminUserAccessOverviewPage.tsx:200

  • Text: 'Dieser Benutzer ist SysAdmin und hat vollen Systemzugriff.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <span>{overview.sysAdminNote || 'Dieser Benutzer ist SysAdmin und hat vollen Systemzugriff.'}</span>

src/pages/admin/AdminUserAccessOverviewPage.tsx:207

  • Text: 'Keine Mandate-Zuordnungen vorhanden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.emptyHint}>Keine Mandate-Zuordnungen vorhanden.</p>

src/pages/admin/AdminUserAccessOverviewPage.tsx:231

  • Text: 'Keine Rollen direkt am Mandanten.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.emptyHint}>Keine Rollen direkt am Mandanten.</p>

src/pages/admin/AdminUserAccessOverviewPage.tsx:256

  • Text: 'Keine Feature-Instanzen zugewiesen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.emptyHint}>Keine Feature-Instanzen zugewiesen.</p>

src/pages/admin/AdminUserAccessOverviewPage.tsx:358

  • Text: 'UI-Zugriffsrechte bestimmen, welche Seiten und Views der Benutzer sehen kann.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>UI-Zugriffsrechte bestimmen, welche Seiten und Views der Benutzer sehen kann.</span>

src/pages/admin/AdminUserAccessOverviewPage.tsx:364

  • Text: 'Keine UI-Berechtigungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Keine UI-Berechtigungen</h3>

src/pages/admin/AdminUserAccessOverviewPage.tsx:375

  • Text: 'Gewährt durch'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th style={{ textAlign: 'left', padding: '0.75rem', color: 'var(--text-secondary)' }}>Gewährt durch</th>

src/pages/admin/AdminUserAccessOverviewPage.tsx:383

  • Text: '1px solid var(--border-color)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color)',

src/pages/admin/AdminUserAccessOverviewPage.tsx:425

  • Text: 'Keine Daten-Berechtigungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Keine Daten-Berechtigungen</h3>

src/pages/admin/AdminUserAccessOverviewPage.tsx:438

  • Text: 'Löschen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th style={{ textAlign: 'center', padding: '0.75rem', color: 'var(--text-secondary)', width: '70px' }}>Löschen</th>

src/pages/admin/AdminUserAccessOverviewPage.tsx:439

  • Text: 'Gewährt durch'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th style={{ textAlign: 'left', padding: '0.75rem', color: 'var(--text-secondary)' }}>Gewährt durch</th>

src/pages/admin/AdminUserAccessOverviewPage.tsx:447

  • Text: '1px solid var(--border-color)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color)',

src/pages/admin/AdminUserAccessOverviewPage.tsx:521

  • Text: 'Ressourcen-Zugriffsrechte bestimmen, welche System-Ressourcen (z.B. AI-Modelle) der Benutzer verwenden kann.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Ressourcen-Zugriffsrechte bestimmen, welche System-Ressourcen (z.B. AI-Modelle) der Benutzer verwenden kann.</span>

src/pages/admin/AdminUserAccessOverviewPage.tsx:527

  • Text: 'Keine Ressourcen-Berechtigungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Keine Ressourcen-Berechtigungen</h3>

src/pages/admin/AdminUserAccessOverviewPage.tsx:538

  • Text: 'Gewährt durch'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th style={{ textAlign: 'left', padding: '0.75rem', color: 'var(--text-secondary)' }}>Gewährt durch</th>

src/pages/admin/AdminUserAccessOverviewPage.tsx:546

  • Text: '1px solid var(--border-color)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color)',

src/pages/admin/AdminUserAccessOverviewPage.tsx:577

  • Text: 'Fehler: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler: {error}</p>

src/pages/admin/AdminUserAccessOverviewPage.tsx:593

  • Text: 'Benutzer-Zugriffsübersicht'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1 className={styles.pageTitle}>Benutzer-Zugriffsübersicht</h1>

src/pages/admin/AdminUserAccessOverviewPage.tsx:594

  • Text: 'Zeigt alle Berechtigungen eines Benutzers an'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Zeigt alle Berechtigungen eines Benutzers an</p>

src/pages/admin/AdminUserAccessOverviewPage.tsx:612

  • Text: '-- Benutzer wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Benutzer wählen --</option>

src/pages/admin/AdminUserAccessOverviewPage.tsx:616

  • Text: ' [SysAdmin]'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {user.isSysAdmin && ' [SysAdmin]'}

src/pages/admin/AdminUserAccessOverviewPage.tsx:637

  • Text: 'Benutzer auswählen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Benutzer auswählen</h3>

src/pages/admin/AdminUserAccessOverviewPage.tsx:645

  • Text: 'Lade Zugriffsübersicht...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Zugriffsübersicht...</span>

src/pages/admin/AdminUserAccessOverviewPage.tsx:669

  • Text: '1px solid var(--border-color)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color)',

src/pages/admin/AdminUserMandatesPage.tsx:100

  • Text: 'Benutzername'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Benutzername',

src/pages/admin/AdminUserMandatesPage.tsx:109

  • Text: 'E-Mail'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'E-Mail',

src/pages/admin/AdminUserMandatesPage.tsx:118

  • Text: 'Vollständiger Name'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Vollständiger Name',

src/pages/admin/AdminUserMandatesPage.tsx:127

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/AdminUserMandatesPage.tsx:140

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Aktiv',

src/pages/admin/AdminUserMandatesPage.tsx:211

  • Text: 'Fehler beim Hinzufügen des Benutzers'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Hinzufügen des Benutzers');

src/pages/admin/AdminUserMandatesPage.tsx:228

  • Text: 'Fehler beim Aktualisieren der Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Aktualisieren der Rollen');

src/pages/admin/AdminUserMandatesPage.tsx:240

  • Text: 'Fehler beim Entfernen des Benutzers'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Entfernen des Benutzers');

src/pages/admin/AdminUserMandatesPage.tsx:263

  • Text: 'Fehler: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler: {error}</p>

src/pages/admin/AdminUserMandatesPage.tsx:277

  • Text: 'Verwalten Sie, welche Benutzer Zugriff auf welche Mandanten haben'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Verwalten Sie, welche Benutzer Zugriff auf welche Mandanten haben</p>

src/pages/admin/AdminUserMandatesPage.tsx:293

  • Text: '-- Mandant wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant wählen --</option>

src/pages/admin/AdminUserMandatesPage.tsx:326

  • Text: 'Kein Mandant ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.emptyTitle}>Kein Mandant ausgewählt</h3>

src/pages/admin/AdminUserMandatesPage.tsx:348

  • Text: 'Rollen bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Rollen bearbeiten',

src/pages/admin/AdminUserMandatesPage.tsx:352

  • Text: 'Aus Mandant entfernen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Aus Mandant entfernen',

src/pages/admin/AdminUserMandatesPage.tsx:369

  • Text: 'Keine Mitglieder gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Mitglieder gefunden"

src/pages/admin/AdminUserMandatesPage.tsx:379

  • Text: 'Benutzer zum Mandanten hinzufügen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Benutzer zum Mandanten hinzufügen</h2>

src/pages/admin/AdminUserMandatesPage.tsx:389

  • Text: 'Alle Benutzer sind bereits diesem Mandanten zugewiesen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Alle Benutzer sind bereits diesem Mandanten zugewiesen.</p>

src/pages/admin/AdminUserMandatesPage.tsx:393

  • Text: 'Lade Rollen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Rollen...</span>

src/pages/admin/AdminUserMandatesPage.tsx:401

  • Text: 'Hinzufügen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText={isSubmitting ? 'Hinzufügen...' : 'Hinzufügen'}

src/pages/admin/AdminUserMandatesPage.tsx:401

  • Text: 'Hinzufügen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText={isSubmitting ? 'Hinzufügen...' : 'Hinzufügen'}

src/pages/admin/AdminUserMandatesPage.tsx:415

  • Text: 'Rollen bearbeiten: {editingUser.username}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Rollen bearbeiten: {editingUser.username}</h2>

src/pages/admin/AdminUsersPage.tsx:131

  • Text: 'Fehler beim Laden der Benutzer: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Benutzer: {error}</p>

src/pages/admin/AdminUsersPage.tsx:145

  • Text: 'Verwalten Sie alle Benutzer im System'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Verwalten Sie alle Benutzer im System</p>

src/pages/admin/AdminUsersPage.tsx:200

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/admin/AdminUsersPage.tsx:208

  • Text: 'Passwort-Link senden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Passwort-Link senden',

src/pages/admin/AdminUsersPage.tsx:221

  • Text: 'Keine Benutzer gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Benutzer gefunden"

src/pages/admin/AdminUsersPage.tsx:230

  • Text: 'Neuer Benutzer'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neuer Benutzer</h2>

src/pages/admin/AdminUsersPage.tsx:242

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/AdminUsersPage.tsx:264

  • Text: 'Benutzer bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Benutzer bearbeiten</h2>

src/pages/admin/AdminUsersPage.tsx:276

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/admin/ChatbotConfigSection.tsx:14

  • Text: 'Anthropic (Claude)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: anthropic: 'Anthropic (Claude)',

src/pages/admin/ChatbotConfigSection.tsx:15

  • Text: 'OpenAI (GPT)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: openai: 'OpenAI (GPT)',

src/pages/admin/ChatbotConfigSection.tsx:17

  • Text: 'Tavily (Web Search)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: tavily: 'Tavily (Web Search)',

src/pages/admin/ChatbotConfigSection.tsx:18

  • Text: 'Private LLM'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: privatellm: 'Private LLM',

src/pages/admin/ChatbotConfigSection.tsx:57

  • Text: 'Althaus Preprocessor'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { id: 'preprocessor', label: 'Althaus Preprocessor', value: 'preprocessor' }

src/pages/admin/ChatbotConfigSection.tsx:113

  • Text: 'Web Research aktivieren (Tavily)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Web Research aktivieren (Tavily)</span>

src/pages/admin/ChatbotConfigSection.tsx:158

  • Text: 'Benutzerdefinierter System-Prompt für den Chatbot...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Benutzerdefinierter System-Prompt für den Chatbot..."

src/pages/admin/InstanceDetailModal.tsx:115

  • Text: 'Benutzer hinzugefügt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde der Instanz hinzugefügt.');

src/pages/admin/InstanceDetailModal.tsx:115

  • Text: 'Der Benutzer wurde der Instanz hinzugefügt.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde der Instanz hinzugefügt.');

src/pages/admin/InstanceDetailModal.tsx:117

  • Text: 'Fehler beim Hinzufügen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Hinzufügen');

src/pages/admin/InstanceDetailModal.tsx:126

  • Text: 'Benutzer entfernt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Benutzer entfernt',"${user.username}" wurde entfernt.);

src/pages/admin/InstanceDetailModal.tsx:128

  • Text: 'Fehler beim Entfernen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Entfernen');

src/pages/admin/InstanceDetailModal.tsx:146

  • Text: 'Rollen und Status wurden gespeichert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Aktualisiert', 'Rollen und Status wurden gespeichert.');

src/pages/admin/InstanceDetailModal.tsx:148

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Speichern');

src/pages/admin/InstanceDetailModal.tsx:160

  • Text: 'Rollen synchronisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Rollen synchronisiert',

src/pages/admin/InstanceDetailModal.tsx:164

  • Text: 'Synchronisierung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Synchronisierung fehlgeschlagen');

src/pages/admin/InstanceDetailModal.tsx:175

  • Text: 'Instanz aktualisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Instanz aktualisiert', 'Einstellungen wurden gespeichert.');

src/pages/admin/InstanceDetailModal.tsx:175

  • Text: 'Einstellungen wurden gespeichert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Instanz aktualisiert', 'Einstellungen wurden gespeichert.');

src/pages/admin/InstanceDetailModal.tsx:177

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Fehler beim Speichern');

src/pages/admin/InstanceDetailModal.tsx:185

  • Text: 'Benutzer'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Benutzer',

src/pages/admin/InstanceDetailModal.tsx:195

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/InstanceDetailModal.tsx:208

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/InstanceDetailModal.tsx:215

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Aktiv',

src/pages/admin/InstanceDetailModal.tsx:226

  • Text: 'Benutzer'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Benutzer',

src/pages/admin/InstanceDetailModal.tsx:232

  • Text: 'Lade Benutzer...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Benutzer...</span>

src/pages/admin/InstanceDetailModal.tsx:248

  • Text: 'Rollen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Rollen',

src/pages/admin/InstanceDetailModal.tsx:272

  • Text: 'Einstellungen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Einstellungen',

src/pages/admin/InstanceDetailModal.tsx:277

  • Text: 'Bezeichnung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'label', type: 'string' as const, label: 'Bezeichnung', required: true, editable: true },

src/pages/admin/InstanceDetailModal.tsx:278

  • Text: 'Aktiviert'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'enabled', type: 'boolean' as const, label: 'Aktiviert', required: false, editable: true },

src/pages/admin/InstanceDetailModal.tsx:302

  • Text: 'Schließen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button type="button" className={styles.modalClose} onClick={onClose} aria-label="Schließen">

src/pages/admin/InstanceDetailModal.tsx:315

  • Text: 'Benutzer hinzufügen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Benutzer hinzufügen</h2>

src/pages/admin/InstanceDetailModal.tsx:322

  • Text: 'Alle Mandanten-Benutzer haben bereits Zugriff.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Alle Mandanten-Benutzer haben bereits Zugriff.</p>

src/pages/admin/InstanceDetailModal.tsx:331

  • Text: 'Hinzufügen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText="Hinzufügen"

src/pages/admin/InstanceDetailModal.tsx:344

  • Text: 'Rollen: {editingUser.username}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Rollen: {editingUser.username}</h2>

src/pages/admin/InstanceHierarchyView.tsx:129

  • Text: 'Benutzer verwalten'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Benutzer verwalten"

src/pages/admin/InstanceHierarchyView.tsx:189

  • Text: 'Lade Hierarchie und Benutzer...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Hierarchie und Benutzer...</span>

src/pages/admin/InstanceHierarchyView.tsx:266

  • Text: 'Keine Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Keine Rollen';

src/pages/admin/InstanceHierarchyView.tsx:286

  • Text: 'Zugang: {statusText}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={hierarchyStyles.tooltipStatus}>Zugang: {statusText}</div>

src/pages/admin/PermissionMatrix.tsx:38

  • Text: 'Benutzer entfernen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Benutzer entfernen',

src/pages/admin/PermissionMatrix.tsx:51

  • Text: 'Keine Rollen in dieser Instanz. Bitte zuerst Rollen synchronisieren.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Rollen in dieser Instanz. Bitte zuerst Rollen synchronisieren.</p>

src/pages/admin/PermissionMatrix.tsx:114

  • Text: 'Rollen bearbeiten'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Rollen bearbeiten"

src/pages/admin/PermissionMatrix.tsx:123

  • Text: 'Aus Instanz entfernen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Aus Instanz entfernen"

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:5

  • Text: 'Invite to mandate'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * 1. Choose invite type: "Invite to mandate" OR "Invite to feature instance"

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:5

  • Text: 'Invite to feature instance'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * 1. Choose invite type: "Invite to mandate" OR "Invite to feature instance"

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:67

  • Text: '1px solid var(--border-color, #C5D9E8)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #C5D9E8)',

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:172

  • Text: 'Bitte mindestens eine E-Mail-Adresse oder einen Benutzernamen angeben.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Bitte mindestens eine E-Mail-Adresse oder einen Benutzernamen angeben.');

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:178

  • Text: 'Diese E-Mail ist bereits in der Liste'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Diese E-Mail ist bereits in der Liste');

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:182

  • Text: 'Dieser Benutzername ist bereits in der Liste'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Dieser Benutzername ist bereits in der Liste');

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:197

  • Text: 'Bitte wählen Sie einen Benutzer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Bitte wählen Sie einen Benutzer');

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:204

  • Text: 'Dieser Benutzer ist bereits in der Liste'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Dieser Benutzer ist bereits in der Liste');

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:234

  • Text: 'Bitte wählen Sie eine Feature-Instanz aus.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Bitte wählen Sie eine Feature-Instanz aus.');

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:273

  • Text: 'Fehler beim Versand'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err?.response?.data?.detail || err?.message || 'Fehler beim Versand');

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:295

  • Text: 'Mandant & Instanz'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? ['Art', 'Mandant & Instanz', 'Einladungen', 'Zusammenfassung']

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:356

  • Text: 'Wohin möchten Sie einladen?'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 style={{ margin: '0 0 16px 0', fontSize: '16px' }}>Wohin möchten Sie einladen?</h3>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:397

  • Text: 'Mandant auswählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {inviteType === 'mandate' ? 'Mandant auswählen' : 'Mandant und Feature-Instanz auswählen'}

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:397

  • Text: 'Mandant und Feature-Instanz auswählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {inviteType === 'mandate' ? 'Mandant auswählen' : 'Mandant und Feature-Instanz auswählen'}

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:400

  • Text: 'Mandant *'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Mandant *</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:411

  • Text: '-- Mandant wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant wählen --</option>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:419

  • Text: 'Feature-Instanz *'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Feature-Instanz *</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:421

  • Text: 'Keine Feature-Instanzen für diesen Mandanten vorhanden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p style={{ fontSize: '13px', color: 'var(--text-secondary)' }}>Keine Feature-Instanzen für diesen Mandanten vorhanden.</p>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:432

  • Text: '-- Feature-Instanz wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Feature-Instanz wählen --</option>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:435

  • Text: ' (deaktiviert)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const suffix = inst.enabled === false ? ' (deaktiviert)' : '';

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:445

  • Text: 'setStep(1)}>← Zurück'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.secondaryButton} onClick={() => setStep(1)}>&larr; Zurück</button>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:461

  • Text: 'Einladungen hinzufügen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 style={{ margin: '0 0 8px 0', fontSize: '16px' }}>Einladungen hinzufügen</h3>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:487

  • Text: 'E-Mail (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>E-Mail (optional)</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:493

  • Text: 'beispiel@firma.com'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="beispiel@firma.com"

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:497

  • Text: 'Benutzername (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Benutzername (optional)</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:504

  • Text: 'z. B. vorname.nachname'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z. B. vorname.nachname"

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:512

  • Text: "Rolle{inviteType === 'featureInstance' ? ' (pro Instanz)' : ''} *"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Rolle{inviteType === 'featureInstance' ? ' (pro Instanz)' : ''} *</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:512

  • Text: ' (pro Instanz)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <label className={styles.formLabel}>Rolle{inviteType === 'featureInstance' ? ' (pro Instanz)' : ''} *</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:552

  • Text: 'Bestehender Benutzer *'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Bestehender Benutzer *</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:559

  • Text: '-- Benutzer wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Benutzer wählen --</option>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:566

  • Text: 'Keine weiteren Benutzer verfügbar.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {availableExistingUsers.length === 0 && <p style={{ fontSize: '12px', color: 'var(--text-secondary)', marginTop: '4px' }}>Keine weiteren Benutzer verfügbar.</p>}

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:570

  • Text: 'Rolle *'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Rolle *</label>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:644

  • Text: 'Noch keine Einladungen hinzugefügt.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p style={{ color: 'var(--text-secondary)', fontSize: '13px', marginBottom: '16px' }}>Noch keine Einladungen hinzugefügt.</p>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:649

  • Text: 'setStep(2)}>← Zurück'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.secondaryButton} onClick={() => setStep(2)}>&larr; Zurück</button>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:666

  • Text: 'Einladung zum Mandanten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <strong>Art:</strong> {inviteType === 'mandate' ? 'Einladung zum Mandanten' : 'Einladung zur Feature-Instanz'}

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:666

  • Text: 'Einladung zur Feature-Instanz'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <strong>Art:</strong> {inviteType === 'mandate' ? 'Einladung zum Mandanten' : 'Einladung zur Feature-Instanz'}

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:677

  • Text: 'Einladungen ({invitees.length}):'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>Einladungen ({invitees.length}):</strong>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:689

  • Text: 'setStep(3)}>← Zurück'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.secondaryButton} onClick={() => setStep(3)}>&larr; Zurück</button>

src/pages/admin/wizards/AdminInvitationWizardPage.tsx:695

  • Text: 'Wird versendet...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? 'Wird versendet...' :${invitees.length} Einladungen versenden}

src/pages/admin/wizards/AdminMandateWizardPage.tsx:84

  • Text: ''
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: const [instanceForm, setInstanceForm] = useState({ label: '', enabled: true });

src/pages/admin/wizards/AdminMandateWizardPage.tsx:136

  • Text: 'Fehler beim Laden der Mandanten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Fehler beim Laden der Mandanten');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:230

  • Text: 'Mandant erstellt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Mandant erstellt',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:231

  • Text: 'Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:237

  • Text: 'Mandant inkl. Abrechnung gespeichert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Erstellt', 'Mandant inkl. Abrechnung gespeichert');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:243

  • Text: 'Fehler beim Erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(e?.response?.data?.detail || e?.message || 'Fehler beim Erstellen');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:267

  • Text: 'Hinzugefügt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Hinzugefügt',${ok} Benutzer zum Mandanten hinzugefügt);

src/pages/admin/wizards/AdminMandateWizardPage.tsx:272

  • Text: 'Teilweise fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Teilweise fehlgeschlagen',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:287

  • Text: 'Benutzer aus Mandant entfernt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Entfernt', 'Benutzer aus Mandant entfernt');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:290

  • Text: 'Fehler beim Entfernen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(result.error || 'Fehler beim Entfernen');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:306

  • Text: ''
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: setInstanceForm({ label: '', enabled: true });

src/pages/admin/wizards/AdminMandateWizardPage.tsx:307

  • Text: 'Instance erstellt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Erstellt', 'Instance erstellt');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:310

  • Text: 'Fehler beim Erstellen (Limit erreicht?)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(result.error || 'Fehler beim Erstellen (Limit erreicht?)');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:321

  • Text: 'Gelöscht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Gelöscht', 'Instance gelöscht');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:321

  • Text: 'Instance gelöscht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Gelöscht', 'Instance gelöscht');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:324

  • Text: 'Fehler beim Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(result.error || 'Fehler beim Löschen');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:346

  • Text: 'Hinzugefügt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Hinzugefügt',${ok} Benutzer zur Feature-Instanz hinzugefügt);

src/pages/admin/wizards/AdminMandateWizardPage.tsx:351

  • Text: 'Teilweise fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Teilweise fehlgeschlagen',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:368

  • Text: 'Rollen aktualisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Gespeichert', 'Rollen aktualisiert');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:373

  • Text: 'Rollen konnten nicht gespeichert werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', r.error || 'Rollen konnten nicht gespeichert werden');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:389

  • Text: 'Rollen aktualisiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Gespeichert', 'Rollen aktualisiert');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:394

  • Text: 'Rollen konnten nicht gespeichert werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', r.error || 'Rollen konnten nicht gespeichert werden');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:403

  • Text: 'Benutzer aus Feature-Instanz entfernt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Entfernt', 'Benutzer aus Feature-Instanz entfernt');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:406

  • Text: 'Fehler beim Entfernen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(result.error || 'Fehler beim Entfernen');

src/pages/admin/wizards/AdminMandateWizardPage.tsx:483

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:535

  • Text: 'Benutzer * (mehrfach möglich)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Benutzer * (mehrfach möglich)</label>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:540

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:576

  • Text: 'Rollen (für alle ausgewählten Benutzer)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Rollen (für alle ausgewählten Benutzer)</label>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:604

  • Text: 'Hinzufügen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? 'Hinzufügen...' : 'Hinzufügen'}

src/pages/admin/wizards/AdminMandateWizardPage.tsx:604

  • Text: 'Hinzufügen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isLoading ? 'Hinzufügen...' : 'Hinzufügen'}

src/pages/admin/wizards/AdminMandateWizardPage.tsx:633

  • Text: 'background 0.2s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.2s',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:657

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:671

  • Text: 'Schritt-für-Schritt Wizard zur Mandanten-Konfiguration'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Schritt-für-Schritt Wizard zur Mandanten-Konfiguration</p>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:679

  • Text: '1px solid var(--danger-color, #fecaca)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--danger-color, #fecaca)',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:691

  • Text: 'Mandant auswählen oder erstellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 style={{ fontSize: '15px', fontWeight: 600, marginBottom: '16px', marginTop: 0 }}>Mandant auswählen oder erstellen</h3>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:726

  • Text: 'Formular wird geladen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Formular wird geladen...</span>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:734

  • Text: 'Mandant erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText={isLoading ? 'Erstellen...' : 'Mandant erstellen'}

src/pages/admin/wizards/AdminMandateWizardPage.tsx:786

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:836

  • Text: 'setStep(1)}>← Zurück'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.secondaryButton} onClick={() => setStep(1)}>&larr; Zurück</button>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:858

  • Text: 'Feature filtern:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Feature filtern:</label>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:864

  • Text: 'Alle Features'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">Alle Features</option>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:875

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:914

  • Text: 'Feature *'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.formLabel}>Feature *</label>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:921

  • Text: '-- Feature wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Feature wählen --</option>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:933

  • Text: 'z.B. Kunde A'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z.B. Kunde A"

src/pages/admin/wizards/AdminMandateWizardPage.tsx:954

  • Text: 'setStep(2)}>← Zurück'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.secondaryButton} onClick={() => setStep(2)}>&larr; Zurück</button>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:1003

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/pages/admin/wizards/AdminMandateWizardPage.tsx:1058

  • Text: 'setStep(3)}>← Zurück'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.secondaryButton} onClick={() => setStep(3)}>&larr; Zurück</button>

src/pages/admin/wizards/AdminMandateWizardPage.tsx:1060

  • Text: 'Konfiguration abgeschlossen!'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Fertig', 'Konfiguration abgeschlossen!');

src/pages/admin/wizards/FeatureInstanceWizard.tsx:36

  • Text: 'Instanz erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { id: 'create', title: 'Instanz erstellen' },

src/pages/admin/wizards/FeatureInstanceWizard.tsx:38

  • Text: 'Benutzer (optional)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { id: 'users', title: 'Benutzer (optional)' },

src/pages/admin/wizards/FeatureInstanceWizard.tsx:74

  • Text: 'Mandant'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'mandateId', label: 'Mandant', type: 'enum' as const, required: true, options: mandateOptions },

src/pages/admin/wizards/FeatureInstanceWizard.tsx:75

  • Text: 'Feature'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'featureCode', label: 'Feature', type: 'enum' as const, required: true, options: featureOptions },

src/pages/admin/wizards/FeatureInstanceWizard.tsx:76

  • Text: 'Bezeichnung'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'label', label: 'Bezeichnung', type: 'string' as const, required: true, editable: true },

src/pages/admin/wizards/FeatureInstanceWizard.tsx:77

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { name: 'enabled', label: 'Aktiv', type: 'boolean' as const, required: false, editable: true },

src/pages/admin/wizards/FeatureInstanceWizard.tsx:104

  • Text: 'Instanz konnte nicht erstellt werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', result.error || 'Instanz konnte nicht erstellt werden');

src/pages/admin/wizards/FeatureInstanceWizard.tsx:152

  • Text: 'Feature-Instanz wurde erstellt und Benutzer zugewiesen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Fertig', 'Feature-Instanz wurde erstellt und Benutzer zugewiesen.');

src/pages/admin/wizards/FeatureInstanceWizard.tsx:155

  • Text: 'Einige Benutzer konnten nicht zugewiesen werden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'Einige Benutzer konnten nicht zugewiesen werden.');

src/pages/admin/wizards/FeatureInstanceWizard.tsx:175

  • Text: 'Neue Feature-Instanz'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neue Feature-Instanz</h2>

src/pages/admin/wizards/FeatureInstanceWizard.tsx:176

  • Text: 'Schließen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button type="button" className={styles.modalClose} onClick={onClose} aria-label="Schließen">

src/pages/admin/wizards/FeatureInstanceWizard.tsx:243

  • Text: 'Keine Mandanten-Benutzer vorhanden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={wizardStyles.stepText}>Keine Mandanten-Benutzer vorhanden.</p>

src/pages/admin/wizards/FeatureInstanceWizard.tsx:261

  • Text: '— Keine Rolle —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Keine Rolle —</option>

src/pages/basedata/ConnectionsPage.tsx:237

  • Text: 'Fehler beim Laden der Verbindungen: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Verbindungen: {error}</p>

src/pages/basedata/ConnectionsPage.tsx:253

  • Text: ', ClickUp'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isClickupConnectionUiEnabled ? ', ClickUp' : ''})

src/pages/basedata/ConnectionsPage.tsx:261

  • Text: 'Microsoft Admin Consent — erteilt der App die nötigen Berechtigungen für den gesamten Tenant'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Microsoft Admin Consent — erteilt der App die nötigen Berechtigungen für den gesamten Tenant"

src/pages/basedata/ConnectionsPage.tsx:294

  • Text: 'ClickUp-Konto verbinden'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="ClickUp-Konto verbinden"

src/pages/basedata/ConnectionsPage.tsx:324

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/basedata/ConnectionsPage.tsx:343

  • Text: 'Token erneuern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Token erneuern',

src/pages/basedata/ConnectionsPage.tsx:357

  • Text: 'Keine Verbindungen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Verbindungen gefunden"

src/pages/basedata/ConnectionsPage.tsx:366

  • Text: 'Verbindung bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Verbindung bearbeiten</h2>

src/pages/basedata/ConnectionsPage.tsx:378

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/basedata/FilesPage.tsx:148

  • Text: 'Created By'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Created By',

src/pages/basedata/FilesPage.tsx:218

  • Text: 'Upload erfolgreich'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Upload erfolgreich',

src/pages/basedata/FilesPage.tsx:222

  • Text: 'Upload fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Upload fehlgeschlagen',${errorCount} Datei(en) konnten nicht hochgeladen werden);

src/pages/basedata/FilesPage.tsx:228

  • Text: 'Neuer Ordnername:'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const name = await promptInput('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });

src/pages/basedata/FilesPage.tsx:228

  • Text: 'Neuer Ordner'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const name = await promptInput('Neuer Ordnername:', { title: 'Neuer Ordner', placeholder: 'Ordnername' });

src/pages/basedata/FilesPage.tsx:303

  • Text: 'Fehler beim Laden der Dateien: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Dateien: {error}</p>

src/pages/basedata/FilesPage.tsx:344

  • Text: '1px solid var(--color-border, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderRight: '1px solid var(--color-border, #e0e0e0)',

src/pages/basedata/FilesPage.tsx:385

  • Text: 'background 0.15s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: isDragging ? 'none' : 'background 0.15s',

src/pages/basedata/FilesPage.tsx:398

  • Text: '1px solid var(--color-border, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border, #e0e0e0)',

src/pages/basedata/FilesPage.tsx:406

  • Text: 'Datei hochladen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <FaUpload /> {uploadingFile ? 'Uploading...' : 'Datei hochladen'}

src/pages/basedata/FilesPage.tsx:438

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/basedata/FilesPage.tsx:468

  • Text: 'Keine Dateien gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Dateien gefunden"

src/pages/basedata/FilesPage.tsx:479

  • Text: 'Datei bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Datei bearbeiten</h2>

src/pages/basedata/FilesPage.tsx:486

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/basedata/PromptsPage.tsx:77

  • Text: 'Created By'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Created By',

src/pages/basedata/PromptsPage.tsx:161

  • Text: 'Fehler beim Laden der Prompts: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Prompts: {error}</p>

src/pages/basedata/PromptsPage.tsx:175

  • Text: 'Prompt-Templates verwalten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Prompt-Templates verwalten</p>

src/pages/basedata/PromptsPage.tsx:221

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/basedata/PromptsPage.tsx:234

  • Text: 'Keine Prompts gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Prompts gefunden"

src/pages/basedata/PromptsPage.tsx:243

  • Text: 'Neuer Prompt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neuer Prompt</h2>

src/pages/basedata/PromptsPage.tsx:255

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/basedata/PromptsPage.tsx:277

  • Text: 'Prompt bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Prompt bearbeiten</h2>

src/pages/basedata/PromptsPage.tsx:289

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/billing/AdminSubscriptionsPage.tsx:11

  • Text: 'Mandant'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'mandateName', label: 'Mandant', type: 'text', sortable: true, filterable: true, width: 180 },

src/pages/billing/AdminSubscriptionsPage.tsx:12

  • Text: 'Plan'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'planTitle', label: 'Plan', type: 'text', sortable: true, filterable: true, width: 180 },

src/pages/billing/AdminSubscriptionsPage.tsx:13

  • Text: 'Status'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'status', label: 'Status', type: 'text', sortable: true, filterable: true, width: 110 },

src/pages/billing/AdminSubscriptionsPage.tsx:14

  • Text: 'Wiederkehrend'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'recurring', label: 'Wiederkehrend', type: 'boolean', sortable: true, filterable: true, width: 120 },

src/pages/billing/AdminSubscriptionsPage.tsx:15

  • Text: 'User'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'activeUsers', label: 'User', type: 'number', sortable: true, width: 70 },

src/pages/billing/AdminSubscriptionsPage.tsx:16

  • Text: 'Instanzen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'activeInstances', label: 'Instanzen', type: 'number', sortable: true, width: 90 },

src/pages/billing/AdminSubscriptionsPage.tsx:17

  • Text: 'Revenue/Mt (CHF)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'monthlyRevenueCHF', label: 'Revenue/Mt (CHF)', type: 'number', sortable: true, width: 140 },

src/pages/billing/AdminSubscriptionsPage.tsx:18

  • Text: 'Gestartet'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'startedAt', label: 'Gestartet', type: 'date', sortable: true, filterable: true, width: 130 },

src/pages/billing/AdminSubscriptionsPage.tsx:19

  • Text: 'Periodenende'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'currentPeriodEnd', label: 'Periodenende', type: 'date', sortable: true, filterable: true, width: 130 },

src/pages/billing/AdminSubscriptionsPage.tsx:20

  • Text: 'Preis/User'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'snapshotPricePerUserCHF', label: 'Preis/User', type: 'number', sortable: true, width: 100 },

src/pages/billing/AdminSubscriptionsPage.tsx:21

  • Text: 'Preis/Instanz'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'snapshotPricePerInstanceCHF', label: 'Preis/Instanz', type: 'number', sortable: true, width: 110 },

src/pages/billing/AdminSubscriptionsPage.tsx:31

  • Text: 'Sofort kündigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { confirmLabel: 'Sofort kündigen', cancelLabel: 'Abbrechen', variant: 'danger' },

src/pages/billing/AdminSubscriptionsPage.tsx:46

  • Text: 'Subscription-Übersicht'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1>Subscription-Übersicht</h1>

src/pages/billing/AdminSubscriptionsPage.tsx:47

  • Text: 'Alle Abonnements aller Mandanten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.subtitle}>Alle Abonnements aller Mandanten</p>

src/pages/billing/AdminSubscriptionsPage.tsx:63

  • Text: 'Sofort kündigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Sofort kündigen',

src/pages/billing/AdminSubscriptionsPage.tsx:69

  • Text: 'Keine Subscriptions vorhanden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Subscriptions vorhanden."

src/pages/billing/BillingAdmin.tsx:67

  • Text: '-- Mandant wählen --'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">-- Mandant wählen --</option>

src/pages/billing/BillingAdmin.tsx:119

  • Text: 'Einstellungen gespeichert!'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setMessage({ type: 'success', text: 'Einstellungen gespeichert!' });

src/pages/billing/BillingAdmin.tsx:121

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setMessage({ type: 'error', text: err.message || 'Fehler beim Speichern' });

src/pages/billing/BillingAdmin.tsx:182

  • Text: 'Betrag pro Nachladung (CHF)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Betrag pro Nachladung (CHF)</label>

src/pages/billing/BillingAdmin.tsx:384

  • Text: 'Betrag muss positiv sein'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setLocalMsg('Betrag muss positiv sein');

src/pages/billing/BillingAdmin.tsx:421

  • Text: 'Betrag (CHF)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>Betrag (CHF)</label>

src/pages/billing/BillingAdmin.tsx:427

  • Text: 'z.B. 50'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z.B. 50"

src/pages/billing/BillingAdmin.tsx:484

  • Text: 'Mandant nicht ausgewählt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (!selectedMandateId) throw new Error('Mandant nicht ausgewählt');

src/pages/billing/BillingAdmin.tsx:486

  • Text: 'Gutschrift konnte nicht erstellt werden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (!result) throw new Error('Gutschrift konnte nicht erstellt werden');

src/pages/billing/BillingAdmin.tsx:650

  • Text: '1px solid var(--color-border, #333)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border, #333)',

src/pages/billing/BillingDashboard.tsx:67

  • Text: 'Lade Statistiken...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.loadingPlaceholder}>Lade Statistiken...</div>;

src/pages/billing/BillingDashboard.tsx:71

  • Text: 'Keine Statistiken verfügbar'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.noData}>Keine Statistiken verfügbar</div>;

src/pages/billing/BillingDashboard.tsx:85

  • Text: 'Kosten nach Anbieter'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>Kosten nach Anbieter</h4>

src/pages/billing/BillingDashboard.tsx:87

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Daten</div>

src/pages/billing/BillingDashboard.tsx:107

  • Text: 'Kosten nach Modell'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>Kosten nach Modell</h4>

src/pages/billing/BillingDashboard.tsx:109

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Daten</div>

src/pages/billing/BillingDashboard.tsx:129

  • Text: 'Kosten nach Feature'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>Kosten nach Feature</h4>

src/pages/billing/BillingDashboard.tsx:131

  • Text: 'Keine Daten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Daten</div>

src/pages/billing/BillingDashboard.tsx:180

  • Text: 'Januar'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 1, label: 'Januar' },

src/pages/billing/BillingDashboard.tsx:181

  • Text: 'Februar'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 2, label: 'Februar' },

src/pages/billing/BillingDashboard.tsx:182

  • Text: 'März'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 3, label: 'März' },

src/pages/billing/BillingDashboard.tsx:183

  • Text: 'April'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 4, label: 'April' },

src/pages/billing/BillingDashboard.tsx:184

  • Text: 'Mai'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 5, label: 'Mai' },

src/pages/billing/BillingDashboard.tsx:185

  • Text: 'Juni'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 6, label: 'Juni' },

src/pages/billing/BillingDashboard.tsx:186

  • Text: 'Juli'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 7, label: 'Juli' },

src/pages/billing/BillingDashboard.tsx:187

  • Text: 'August'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 8, label: 'August' },

src/pages/billing/BillingDashboard.tsx:188

  • Text: 'September'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 9, label: 'September' },

src/pages/billing/BillingDashboard.tsx:189

  • Text: 'Oktober'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 10, label: 'Oktober' },

src/pages/billing/BillingDashboard.tsx:190

  • Text: 'November'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 11, label: 'November' },

src/pages/billing/BillingDashboard.tsx:191

  • Text: 'Dezember'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { value: 12, label: 'Dezember' },

src/pages/billing/BillingDashboard.tsx:198

  • Text: 'Übersicht über Guthaben und Nutzung'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.subtitle}>Übersicht über Guthaben und Nutzung</p>

src/pages/billing/BillingDashboard.tsx:207

  • Text: 'Lade Guthaben...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingPlaceholder}>Lade Guthaben...</div>

src/pages/billing/BillingDashboard.tsx:209

  • Text: 'Keine Abrechnungskonten vorhanden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Abrechnungskonten vorhanden</div>

src/pages/billing/BillingDataView.tsx:5

  • Text: 'Übersicht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * - Tab "Übersicht": KPI grid with cost, balance, storage metrics

src/pages/billing/BillingDataView.tsx:90

  • Text: '1px solid var(--color-border, #333)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border, #333)',

src/pages/billing/BillingDataView.tsx:133

  • Text: '{n} Transaktionen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: subtitle: tr('{n} Transaktionen', { n: String(viewStats.transactionCount) }),

src/pages/billing/BillingDataView.tsx:138

  • Text: 'Top: {name}'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: subtitle: topProvider ? tr('Top: {name}', { name: topProvider[0] }) : tr('Keine Nutzung'),

src/pages/billing/BillingDataView.tsx:138

  • Text: 'Keine Nutzung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: subtitle: topProvider ? tr('Top: {name}', { name: topProvider[0] }) : tr('Keine Nutzung'),

src/pages/billing/BillingDataView.tsx:143

  • Text: 'Top: {name}'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: subtitle: topModel ? tr('Top: {name}', { name: topModel[0] }) : tr('Keine Nutzung'),

src/pages/billing/BillingDataView.tsx:143

  • Text: 'Keine Nutzung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: subtitle: topModel ? tr('Top: {name}', { name: topModel[0] }) : tr('Keine Nutzung'),

src/pages/billing/BillingDataView.tsx:148

  • Text: 'Top: {name}'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: subtitle: topFeature ? tr('Top: {name}', { name: topFeature[0] }) : tr('Keine Nutzung'),

src/pages/billing/BillingDataView.tsx:148

  • Text: 'Keine Nutzung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: subtitle: topFeature ? tr('Top: {name}', { name: topFeature[0] }) : tr('Keine Nutzung'),

src/pages/billing/BillingDataView.tsx:179

  • Text: '{n} Transaktionen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { label: tr('Gesamtkosten'), value: _formatCurrency(viewStats.totalCost), subtitle: tr('{n} Transaktionen', { n: String(viewStats.transactionCount) }) },

src/pages/billing/BillingDataView.tsx:180

  • Text: 'pro Transaktion'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: { label: tr('Durchschnitt'), value: _formatCurrency(avgCost), subtitle: tr('pro Transaktion') },

src/pages/billing/BillingDataView.tsx:196

  • Text: 'Kosten nach Anbieter'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: tr('Kosten nach Anbieter'),

src/pages/billing/BillingDataView.tsx:204

  • Text: 'Kosten nach Modell'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: tr('Kosten nach Modell'),

src/pages/billing/BillingDataView.tsx:212

  • Text: 'Kosten nach Feature'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: tr('Kosten nach Feature'),

src/pages/billing/BillingDataView.tsx:220

  • Text: 'Kosten nach Mandant'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: tr('Kosten nach Mandant'),

src/pages/billing/BillingDataView.tsx:277

  • Text: 'Zahlung erfolgreich. Guthaben wurde verbucht.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setCheckoutMessage({ type: 'success', text: 'Zahlung erfolgreich. Guthaben wurde verbucht.' });

src/pages/billing/BillingDataView.tsx:523

  • Text: 'Nutzung, Diagramme und Transaktionen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.subtitle}>Nutzung, Diagramme und Transaktionen</p>

src/pages/billing/BillingDataView.tsx:586

  • Text: '1px solid var(--border-color, #333)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #333)',

src/pages/billing/BillingMandateView.tsx:47

  • Text: 'Anzahl Benutzer'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th>Anzahl Benutzer</th>

src/pages/billing/BillingMandateView.tsx:48

  • Text: 'Warnschwelle (%)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <th>Warnschwelle (%)</th>

src/pages/billing/BillingMandateView.tsx:217

  • Text: 'Guthaben und Transaktionen pro Mandant'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.subtitle}>Guthaben und Transaktionen pro Mandant</p>

src/pages/billing/BillingMandateView.tsx:228

  • Text: 'Lade Daten...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingPlaceholder}>Lade Daten...</div>

src/pages/billing/BillingMandateView.tsx:230

  • Text: 'Keine Mandanten mit Billing-Settings vorhanden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Mandanten mit Billing-Settings vorhanden</div>

src/pages/billing/BillingMandateView.tsx:253

  • Text: 'Lade Transaktionen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingPlaceholder}>Lade Transaktionen...</div>

src/pages/billing/BillingMandateView.tsx:255

  • Text: 'Keine Transaktionen vorhanden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Transaktionen vorhanden</div>

src/pages/billing/BillingMandateView.tsx:267

  • Text: 'Mehr laden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {loading ? 'Laden...' : 'Mehr laden'}

src/pages/billing/BillingNav.tsx:27

  • Text: '1px solid var(--color-border)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--color-border)',

src/pages/billing/BillingTransactions.tsx:97

  • Text: 'Übersicht aller Kontobewegungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.subtitle}>Übersicht aller Kontobewegungen</p>

src/pages/billing/BillingTransactions.tsx:104

  • Text: 'Lade Transaktionen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingPlaceholder}>Lade Transaktionen...</div>

src/pages/billing/BillingTransactions.tsx:106

  • Text: 'Keine Transaktionen vorhanden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Transaktionen vorhanden</div>

src/pages/billing/BillingTransactions.tsx:138

  • Text: 'Mehr laden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {loading ? 'Laden...' : 'Mehr laden'}

src/pages/billing/BillingUserView.tsx:92

  • Text: 'Alle Mandanten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">Alle Mandanten</option>

src/pages/billing/BillingUserView.tsx:107

  • Text: 'Alle Benutzer'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">Alle Benutzer</option>

src/pages/billing/BillingUserView.tsx:313

  • Text: 'Guthaben und Transaktionen pro Benutzer'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.subtitle}>Guthaben und Transaktionen pro Benutzer</p>

src/pages/billing/BillingUserView.tsx:322

  • Text: 'Lade Daten...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingPlaceholder}>Lade Daten...</div>

src/pages/billing/BillingUserView.tsx:324

  • Text: 'Keine Benutzer-Konten vorhanden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Benutzer-Konten vorhanden</div>

src/pages/billing/BillingUserView.tsx:349

  • Text: 'Lade Transaktionen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingPlaceholder}>Lade Transaktionen...</div>

src/pages/billing/BillingUserView.tsx:351

  • Text: 'Keine Transaktionen vorhanden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Transaktionen vorhanden</div>

src/pages/billing/BillingUserView.tsx:367

  • Text: 'Mehr laden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {loading ? 'Laden...' : 'Mehr laden'}

src/pages/billing/SubscriptionTab.tsx:44

  • Text: 'Zahlung ausstehend'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: PENDING: { label: 'Zahlung ausstehend', color: '#f59e0b' },

src/pages/billing/SubscriptionTab.tsx:45

  • Text: 'Geplant'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: SCHEDULED: { label: 'Geplant', color: '#8b5cf6' },

src/pages/billing/SubscriptionTab.tsx:46

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: ACTIVE: { label: 'Aktiv', color: '#22c55e' },

src/pages/billing/SubscriptionTab.tsx:47

  • Text: 'Testphase'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: TRIALING: { label: 'Testphase', color: '#38bdf8' },

src/pages/billing/SubscriptionTab.tsx:48

  • Text: 'Zahlung ausstehend'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: PAST_DUE: { label: 'Zahlung ausstehend', color: '#f59e0b' },

src/pages/billing/SubscriptionTab.tsx:49

  • Text: 'Abgelaufen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: EXPIRED: { label: 'Abgelaufen', color: '#6b7280' },

src/pages/billing/SubscriptionTab.tsx:54

  • Text: 'Jährlich'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: YEARLY: 'Jährlich',

src/pages/billing/SubscriptionTab.tsx:78

  • Text: '2px solid var(--primary-color, #F25843)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isCurrent ? '2px solid var(--primary-color, #F25843)' : '1px solid var(--color-border, var(--border-color, #333))',

src/pages/billing/SubscriptionTab.tsx:78

  • Text: '1px solid var(--color-border, var(--border-color, #333))'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isCurrent ? '2px solid var(--primary-color, #F25843)' : '1px solid var(--color-border, var(--border-color, #333))',

src/pages/billing/SubscriptionTab.tsx:103

  • Text: '/ {_periodLabel[plan.billingPeriod] || plan.billingPeriod}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div>User: <strong>{_formatCurrency(plan.pricePerUserCHF)}</strong> / {_periodLabel[plan.billingPeriod] || plan.billingPeriod}</div>

src/pages/billing/SubscriptionTab.tsx:104

  • Text: '/ {_periodLabel[plan.billingPeriod] || plan.billingPeriod}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div>Instanz: <strong>{_formatCurrency(plan.pricePerFeatureInstanceCHF)}</strong> / {_periodLabel[plan.billingPeriod] || plan.billingPeriod}</div>

src/pages/billing/SubscriptionTab.tsx:124

  • Text: '· max. {plan.maxUsers} User'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {plan.maxUsers && <> · max. {plan.maxUsers} User</>}

src/pages/billing/SubscriptionTab.tsx:125

  • Text: '· max. {plan.maxFeatureInstances} Instanzen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {plan.maxFeatureInstances && <> · max. {plan.maxFeatureInstances} Instanzen</>}

src/pages/billing/SubscriptionTab.tsx:129

  • Text: '· Speicher inkl. {formatBinaryDataSizeFromMebibytes(plan.maxDataVolumeMB)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <> · Speicher inkl. {formatBinaryDataSizeFromMebibytes(plan.maxDataVolumeMB)}</>

src/pages/billing/SubscriptionTab.tsx:131

  • Text: '· AI-Budget { _formatCurrency(plan.budgetAiCHF ?? 0)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {(plan.budgetAiCHF ?? 0) > 0 && <> · AI-Budget { _formatCurrency(plan.budgetAiCHF ?? 0)}</>}

src/pages/billing/SubscriptionTab.tsx:150

  • Text: 'Kostenpflichtig abonnieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : (!isFreePlan && !plan.trialDays) ? 'Kostenpflichtig abonnieren' : 'Auswählen'}

src/pages/billing/SubscriptionTab.tsx:150

  • Text: 'Auswählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : (!isFreePlan && !plan.trialDays) ? 'Kostenpflichtig abonnieren' : 'Auswählen'}

src/pages/billing/SubscriptionTab.tsx:180

  • Text: '1px solid var(--color-border, var(--border-color, #333))'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--color-border, var(--border-color, #333))',

src/pages/billing/SubscriptionTab.tsx:198

  • Text: 'Gekündigt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: }}>Gekündigt</span>

src/pages/billing/SubscriptionTab.tsx:215

  • Text: 'Zahlung erfolgreich. Abonnement wird aktiviert — bitte warten...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Zahlung erfolgreich. Abonnement wird aktiviert — bitte warten...'

src/pages/billing/SubscriptionTab.tsx:216

  • Text: 'Die Zahlung wurde noch nicht abgeschlossen. Sie können den Checkout abbrechen oder erneut starten.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Die Zahlung wurde noch nicht abgeschlossen. Sie können den Checkout abbrechen oder erneut starten.'}

src/pages/billing/SubscriptionTab.tsx:235

  • Text: 'Gestartet: {_formatDate(sub.startedAt)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Gestartet: {_formatDate(sub.startedAt)}</span>

src/pages/billing/SubscriptionTab.tsx:236

  • Text: "Periode: {_periodLabel[plan.billingPeriod] || '—'}"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {plan && <span>Periode: {_periodLabel[plan.billingPeriod] || '—'}</span>}

src/pages/billing/SubscriptionTab.tsx:237

  • Text: 'Periodenende: {_formatDate(sub.currentPeriodEnd)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {sub.currentPeriodEnd && <span>Periodenende: {_formatDate(sub.currentPeriodEnd)}</span>}

src/pages/billing/SubscriptionTab.tsx:238

  • Text: 'Trial endet: {_formatDate(sub.trialEndsAt)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {sub.trialEndsAt && <span>Trial endet: {_formatDate(sub.trialEndsAt)}</span>}

src/pages/billing/SubscriptionTab.tsx:240

  • Text: 'Läuft aus am: {_formatDate(sub.currentPeriodEnd)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span style={{ color: '#ef4444' }}>Läuft aus am: {_formatDate(sub.currentPeriodEnd)}</span>

src/pages/billing/SubscriptionTab.tsx:244

  • Text: 'AI-Budget (inkl.): {_formatCurrency(plan.budgetAiCHF ?? 0)} / Periode'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>AI-Budget (inkl.): {_formatCurrency(plan.budgetAiCHF ?? 0)} / Periode</span>

src/pages/billing/SubscriptionTab.tsx:270

  • Text: 'Wird reaktiviert...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {reactivating ? 'Wird reaktiviert...' : 'Reaktivieren'}

src/pages/billing/SubscriptionTab.tsx:285

  • Text: 'Wird gekündigt...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {cancelling ? 'Wird gekündigt...' : 'Kündigen'}

src/pages/billing/SubscriptionTab.tsx:285

  • Text: 'Kündigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {cancelling ? 'Wird gekündigt...' : 'Kündigen'}

src/pages/billing/SubscriptionTab.tsx:300

  • Text: 'Wird abgebrochen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {cancelling ? 'Wird abgebrochen...' : 'Abbrechen'}

src/pages/billing/SubscriptionTab.tsx:343

  • Text: 'Zahlung erfolgreich — Abonnement wird aktiviert...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setCheckoutMessage({ type: 'success', text: 'Zahlung erfolgreich — Abonnement wird aktiviert...' });

src/pages/billing/SubscriptionTab.tsx:357

  • Text: 'Abonnement wurde aktiviert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setCheckoutMessage({ type: 'success', text: 'Abonnement wurde aktiviert.' });

src/pages/billing/SubscriptionTab.tsx:370

  • Text: 'Checkout abgebrochen. Ihr bestehendes Abonnement bleibt aktiv.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setCheckoutMessage({ type: 'info', text: 'Checkout abgebrochen. Ihr bestehendes Abonnement bleibt aktiv.' });

src/pages/billing/SubscriptionTab.tsx:381

  • Text: 'Abonnement wurde aktiviert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setCheckoutMessage({ type: 'success', text: 'Abonnement wurde aktiviert.' });

src/pages/billing/SubscriptionTab.tsx:391

  • Text: 'Fehler beim Aktivieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionError(err?.response?.data?.detail || err.message || 'Fehler beim Aktivieren');

src/pages/billing/SubscriptionTab.tsx:402

  • Text: 'Diesen Vorgang abbrechen?'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Diesen Vorgang abbrechen?'

src/pages/billing/SubscriptionTab.tsx:403

  • Text: 'Abonnement kündigen? Es bleibt bis zum Periodenende aktiv.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Abonnement kündigen? Es bleibt bis zum Periodenende aktiv.',

src/pages/billing/SubscriptionTab.tsx:405

  • Text: 'Vorgang abbrechen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: isPendingOrScheduled ? 'Vorgang abbrechen' : 'Abonnement kündigen',

src/pages/billing/SubscriptionTab.tsx:405

  • Text: 'Abonnement kündigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: isPendingOrScheduled ? 'Vorgang abbrechen' : 'Abonnement kündigen',

src/pages/billing/SubscriptionTab.tsx:406

  • Text: 'Ja, abbrechen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: confirmLabel: isPendingOrScheduled ? 'Ja, abbrechen' : 'Kündigen',

src/pages/billing/SubscriptionTab.tsx:406

  • Text: 'Kündigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: confirmLabel: isPendingOrScheduled ? 'Ja, abbrechen' : 'Kündigen',

src/pages/billing/SubscriptionTab.tsx:407

  • Text: 'Nein, zurück'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: cancelLabel: isPendingOrScheduled ? 'Nein, zurück' : 'Abbrechen',

src/pages/billing/SubscriptionTab.tsx:430

  • Text: 'Fehler beim Reaktivieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setActionError(err?.response?.data?.detail || err.message || 'Fehler beim Reaktivieren');

src/pages/billing/SubscriptionTab.tsx:437

  • Text: 'Lade Abonnement-Daten...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.loadingPlaceholder}>Lade Abonnement-Daten...</div>;

src/pages/billing/SubscriptionTab.tsx:464

  • Text: 'Aktuelles Abonnement'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>Aktuelles Abonnement</h2>

src/pages/billing/SubscriptionTab.tsx:470

  • Text: 'Zahlung wird verarbeitet'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? (justPaid ? 'Zahlung wird verarbeitet' : 'Checkout in Bearbeitung')

src/pages/billing/SubscriptionTab.tsx:470

  • Text: 'Checkout in Bearbeitung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? (justPaid ? 'Zahlung wird verarbeitet' : 'Checkout in Bearbeitung')

src/pages/billing/SubscriptionTab.tsx:471

  • Text: 'Operatives Abonnement'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Operatives Abonnement'}

src/pages/billing/SubscriptionTab.tsx:488

  • Text: 'Geplanter Nachfolger'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>Geplanter Nachfolger</h2>

src/pages/billing/SubscriptionTab.tsx:492

  • Text: 'Startet nach Ablauf des aktuellen Abonnements'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: label="Startet nach Ablauf des aktuellen Abonnements"

src/pages/billing/SubscriptionTab.tsx:502

  • Text: 'Verfügbare Pläne'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.sectionTitle}>Verfügbare Pläne</h2>

src/pages/billing/SubscriptionTab.tsx:504

  • Text: 'Keine Pläne verfügbar'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.noData}>Keine Pläne verfügbar</div>

src/pages/views/chatbot/ChatbotConversationsView.tsx:83

  • Text: 'Möchten Sie diese Konversation wirklich löschen?'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const ok = await confirm('Möchten Sie diese Konversation wirklich löschen?', {

src/pages/views/chatbot/ChatbotConversationsView.tsx:84

  • Text: 'Konversation löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Konversation löschen',

src/pages/views/chatbot/ChatbotConversationsView.tsx:85

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: confirmLabel: 'Löschen',

src/pages/views/chatbot/ChatbotConversationsView.tsx:108

  • Text: 'Gerade eben'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: if (diffMins < 1) return 'Gerade eben';

src/pages/views/chatbot/ChatbotConversationsView.tsx:125

  • Text: 'Neue Konversation'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: return 'Neue Konversation';

src/pages/views/chatbot/ChatbotConversationsView.tsx:137

  • Text: 'Neue Konversation'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Neue Konversation"

src/pages/views/chatbot/ChatbotConversationsView.tsx:146

  • Text: 'Lade Konversationen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Konversationen...</span>

src/pages/views/chatbot/ChatbotConversationsView.tsx:158

  • Text: 'Noch keine Konversationen vorhanden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Noch keine Konversationen vorhanden.</p>

src/pages/views/chatbot/ChatbotConversationsView.tsx:159

  • Text: 'Starte eine neue Konversation, um zu beginnen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.emptyHint}>Starte eine neue Konversation, um zu beginnen.</p>

src/pages/views/chatbot/ChatbotConversationsView.tsx:179

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Löschen"

src/pages/views/chatbot/ChatbotConversationsView.tsx:200

  • Text: 'Lade Nachrichten...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Nachrichten...</span>

src/pages/views/chatbot/ChatbotConversationsView.tsx:249

  • Text: 'Nachricht eingeben...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Nachricht eingeben..."

src/pages/views/commcoach/CommcoachDashboardView.tsx:25

  • Text: 'Dashboard wird geladen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.loading}>Dashboard wird geladen...</div>;

src/pages/views/commcoach/CommcoachDashboardView.tsx:33

  • Text: 'Keine Daten verfügbar.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.empty}>Keine Daten verfügbar.</div>;

src/pages/views/commcoach/CommcoachDashboardView.tsx:42

  • Text: 'Tage Streak'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.kpiLabel}>Tage Streak</div>

src/pages/views/commcoach/CommcoachDashboardView.tsx:43

  • Text: 'Rekord: {dashboard.longestStreak}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.kpiSub}>Rekord: {dashboard.longestStreak}</div>

src/pages/views/commcoach/CommcoachDashboardView.tsx:68

  • Text: 'Aktive Coaching-Themen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Aktive Coaching-Themen</h3>

src/pages/views/commcoach/CommcoachDashboardView.tsx:71

  • Text: 'Noch keine Coaching-Themen erstellt.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Noch keine Coaching-Themen erstellt.</p>

src/pages/views/commcoach/CommcoachDashboardView.tsx:72

  • Text: 'Wechsle zum Coaching-Tab, um dein erstes Thema anzulegen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Wechsle zum Coaching-Tab, um dein erstes Thema anzulegen.</p>

src/pages/views/commcoach/CommcoachDashboardView.tsx:89

  • Text: 'Ziele: {ctx.goalProgress}%'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {ctx.goalProgress != null && <span>Ziele: {ctx.goalProgress}%</span>}

src/pages/views/commcoach/CommcoachDashboardView.tsx:125

  • Text: 'Tipp des Tages'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Tipp des Tages</h3>

src/pages/views/commcoach/CommcoachDashboardView.tsx:137

  • Text: 'Führung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: leadership: 'Führung',

src/pages/views/commcoach/CommcoachDashboardView.tsx:140

  • Text: 'Präsentation'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: presentation: 'Präsentation',

src/pages/views/commcoach/CommcoachDashboardView.tsx:143

  • Text: 'Change Mgmt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: changeManagement: 'Change Mgmt',

src/pages/views/commcoach/CommcoachDossierView.tsx:262

  • Text: 'Seitenleiste einblenden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={udbCollapsed ? 'Seitenleiste einblenden' : 'Seitenleiste ausblenden'}

src/pages/views/commcoach/CommcoachDossierView.tsx:262

  • Text: 'Seitenleiste ausblenden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={udbCollapsed ? 'Seitenleiste einblenden' : 'Seitenleiste ausblenden'}

src/pages/views/commcoach/CommcoachDossierView.tsx:294

  • Text: 'Neues Thema'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Neues Thema"

src/pages/views/commcoach/CommcoachDossierView.tsx:305

  • Text: 'Thema / Titel...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Thema / Titel..."

src/pages/views/commcoach/CommcoachDossierView.tsx:313

  • Text: 'Beschreibung (optional)'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Beschreibung (optional)"

src/pages/views/commcoach/CommcoachDossierView.tsx:319

  • Text: 'Führung'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="leadership">Führung</option>

src/pages/views/commcoach/CommcoachDossierView.tsx:322

  • Text: 'Präsentation'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="presentation">Präsentation</option>

src/pages/views/commcoach/CommcoachDossierView.tsx:325

  • Text: 'Change Management'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="changeManagement">Change Management</option>

src/pages/views/commcoach/CommcoachDossierView.tsx:329

  • Text: 'Wird erstellt...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.actionLoading === 'creating' ? 'Wird erstellt...' : 'Erstellen'}

src/pages/views/commcoach/CommcoachDossierView.tsx:339

  • Text: 'Willkommen beim Kommunikations-Coach'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Willkommen beim Kommunikations-Coach</h3>

src/pages/views/commcoach/CommcoachDossierView.tsx:340

  • Text: 'Erstelle ein Thema, um zu beginnen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Erstelle ein Thema, um zu beginnen.</p>

src/pages/views/commcoach/CommcoachDossierView.tsx:341

  • Text: 'setShowNewContext(true)}>Neues Thema erstellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.btnPrimary} onClick={() => setShowNewContext(true)}>Neues Thema erstellen</button>

src/pages/views/commcoach/CommcoachDossierView.tsx:362

  • Text: 'Wird archiviert...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.actionLoading === 'archiving' ? 'Wird archiviert...' : 'Archivieren'}

src/pages/views/commcoach/CommcoachDossierView.tsx:387

  • Text: 'Starte eine neue Coaching-Session zu diesem Thema.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Starte eine neue Coaching-Session zu diesem Thema.</p>

src/pages/views/commcoach/CommcoachDossierView.tsx:390

  • Text: 'Gesprächspartner wählen:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.personaLabel}>Gesprächspartner wählen:</label>

src/pages/views/commcoach/CommcoachDossierView.tsx:408

  • Text: 'Wird gestartet...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Wird gestartet...'

src/pages/views/commcoach/CommcoachDossierView.tsx:411

  • Text: 'Session starten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Session starten'}

src/pages/views/commcoach/CommcoachDossierView.tsx:418

  • Text: 'Session aktiv'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.sessionLabel}>Session aktiv</span>

src/pages/views/commcoach/CommcoachDossierView.tsx:432

  • Text: 'Stummschaltung aufheben'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={voice.muted ? 'Stummschaltung aufheben' : 'Stummschalten'}

src/pages/views/commcoach/CommcoachDossierView.tsx:434

  • Text: '\u{1F507} Stumm'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {voice.muted ? '\u{1F507} Stumm' : '\u{1F3A4} Ton an'}

src/pages/views/commcoach/CommcoachDossierView.tsx:434

  • Text: '\u{1F3A4} Ton an'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {voice.muted ? '\u{1F507} Stumm' : '\u{1F3A4} Ton an'}

src/pages/views/commcoach/CommcoachDossierView.tsx:437

  • Text: 'Wird abgeschlossen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.actionLoading === 'completing' ? 'Wird abgeschlossen...' : 'Abschliessen'}

src/pages/views/commcoach/CommcoachDossierView.tsx:440

  • Text: 'Wird abgebrochen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.actionLoading === 'cancelling' ? 'Wird abgebrochen...' : 'Abbrechen'}

src/pages/views/commcoach/CommcoachDossierView.tsx:469

  • Text: 'Coach denkt nach'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <div className={styles.typing}>{coach.streamingStatus || 'Coach denkt nach'}<span className={styles.typingDots}>...</span></div>

src/pages/views/commcoach/CommcoachDossierView.tsx:489

  • Text: 'Tool-Aufrufe vorhanden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.streamingStatus || (coach.agentToolCalls.length > 0 ? 'Tool-Aufrufe vorhanden' : 'Warte auf Agent')}

src/pages/views/commcoach/CommcoachDossierView.tsx:489

  • Text: 'Warte auf Agent'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.streamingStatus || (coach.agentToolCalls.length > 0 ? 'Tool-Aufrufe vorhanden' : 'Warte auf Agent')}

src/pages/views/commcoach/CommcoachDossierView.tsx:513

  • Text: 'läuft'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {toolCall.success === true ? 'fertig' : toolCall.success === false ? 'fehler' : 'läuft'}

src/pages/views/commcoach/CommcoachDossierView.tsx:539

  • Text: 'Stumm Mikrofon aus'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Stumm Mikrofon aus'

src/pages/views/commcoach/CommcoachDossierView.tsx:541

  • Text: 'Coach spricht...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? (coach.streamingStatus || 'Coach spricht...')

src/pages/views/commcoach/CommcoachDossierView.tsx:543

  • Text: 'Coach denkt nach...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? (coach.streamingStatus || 'Coach denkt nach...')

src/pages/views/commcoach/CommcoachDossierView.tsx:545

  • Text: 'Unterbrochen Mikrofon an'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Unterbrochen Mikrofon an'

src/pages/views/commcoach/CommcoachDossierView.tsx:547

  • Text: 'Mikrofon an bitte sprechen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? (voice.liveTranscript ? 'Spricht...' : 'Mikrofon an bitte sprechen')

src/pages/views/commcoach/CommcoachDossierView.tsx:548

  • Text: 'Mikrofon wird gestartet...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Mikrofon wird gestartet...'}

src/pages/views/commcoach/CommcoachDossierView.tsx:602

  • Text: 'Nachricht eingeben...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Nachricht eingeben..."

src/pages/views/commcoach/CommcoachDossierView.tsx:616

  • Text: 'Datei anhängen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Datei anhängen"

src/pages/views/commcoach/CommcoachDossierView.tsx:641

  • Text: 'Dateien anhängen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div style={{ padding: '6px 12px', fontSize: 11, color: '#999', fontWeight: 600, borderBottom: '1px solid #f0f0f0' }}>Dateien anhängen</div>

src/pages/views/commcoach/CommcoachDossierView.tsx:671

  • Text: 'Datenquellen anhängen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Datenquellen anhängen"

src/pages/views/commcoach/CommcoachDossierView.tsx:698

  • Text: 'Persönliche Quellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div style={{ padding: '6px 12px', fontSize: 11, color: '#999', fontWeight: 600, borderBottom: '1px solid #f0f0f0' }}>Persönliche Quellen</div>

src/pages/views/commcoach/CommcoachDossierView.tsx:775

  • Text: 'Neue Aufgabe...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Neue Aufgabe..."

src/pages/views/commcoach/CommcoachDossierView.tsx:781

  • Text: 'Wird hinzugefügt...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.actionLoading === 'addingTask' ? 'Wird hinzugefügt...' : 'Hinzufügen'}

src/pages/views/commcoach/CommcoachDossierView.tsx:781

  • Text: 'Hinzufügen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {coach.actionLoading === 'addingTask' ? 'Wird hinzugefügt...' : 'Hinzufügen'}

src/pages/views/commcoach/CommcoachDossierView.tsx:785

  • Text: 'Noch keine Aufgaben. Der Coach schlägt während Sessions Aufgaben vor.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyTab}>Noch keine Aufgaben. Der Coach schlägt während Sessions Aufgaben vor.</div>

src/pages/views/commcoach/CommcoachDossierView.tsx:814

  • Text: 'Noch keine abgeschlossenen Sessions.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyTab}>Noch keine abgeschlossenen Sessions.</div>

src/pages/views/commcoach/CommcoachDossierView.tsx:824

  • Text: 'Score: {Math.round(s.competenceScore)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {s.competenceScore != null && <span className={styles.sessionScore}>Score: {Math.round(s.competenceScore)}</span>}

src/pages/views/commcoach/CommcoachDossierView.tsx:831

  • Text: '| Persona'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {s.personaId && <span> | Persona</span>}

src/pages/views/commcoach/CommcoachDossierView.tsx:849

  • Text: 'Noch keine Bewertungen. Schliesse eine Session ab, um Scores zu erhalten.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyTab}>Noch keine Bewertungen. Schliesse eine Session ab, um Scores zu erhalten.</div>

src/pages/views/commcoach/CommcoachDossierView.tsx:899

  • Text: 'Coaching (aktiv)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: case 'coaching': return coach.session ? 'Coaching (aktiv)' : 'Coaching';

src/pages/views/commcoach/CommcoachDossierView.tsx:925

  • Text: 'Einfühlungsvermögen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: empathy: 'Einfühlungsvermögen', clarity: 'Klarheit',

src/pages/views/commcoach/CommcoachDossierView.tsx:926

  • Text: 'Zuhören'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: assertiveness: 'Durchsetzung', listening: 'Zuhören',

src/pages/views/commcoach/CommcoachSettingsView.tsx:5

  • Text: 'Stimme & Sprache'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * Voice/language settings are in user-level settings (/settings -> "Stimme & Sprache").

src/pages/views/commcoach/CommcoachSettingsView.tsx:45

  • Text: 'Fehler beim Laden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Laden');

src/pages/views/commcoach/CommcoachSettingsView.tsx:65

  • Text: 'Einstellungen gespeichert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setSuccess('Einstellungen gespeichert');

src/pages/views/commcoach/CommcoachSettingsView.tsx:68

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Speichern');

src/pages/views/commcoach/CommcoachSettingsView.tsx:75

  • Text: 'Einstellungen werden geladen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.loading}>Einstellungen werden geladen...</div>;

src/pages/views/commcoach/CommcoachSettingsView.tsx:86

  • Text: 'Stimme & Sprache'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Stimme & Sprache</h3>

src/pages/views/commcoach/CommcoachSettingsView.tsx:91

  • Text: 'Stimme & Sprache'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: Benutzereinstellungen oeffnen (Tab "Stimme & Sprache")

src/pages/views/commcoach/CommcoachSettingsView.tsx:121

  • Text: 'Sessions gesamt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.statItem}><span className={styles.statValue}>{profile.totalSessions}</span><span className={styles.statLabel}>Sessions gesamt</span></div>

src/pages/views/commcoach/CommcoachSettingsView.tsx:122

  • Text: 'Minuten gesamt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.statItem}><span className={styles.statValue}>{profile.totalMinutes}</span><span className={styles.statLabel}>Minuten gesamt</span></div>

src/pages/views/commcoach/CommcoachSettingsView.tsx:123

  • Text: 'Aktueller Streak'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.statItem}><span className={styles.statValue}>{profile.streakDays}</span><span className={styles.statLabel}>Aktueller Streak</span></div>

src/pages/views/commcoach/CommcoachSettingsView.tsx:124

  • Text: 'Laengster Streak'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.statItem}><span className={styles.statValue}>{profile.longestStreak}</span><span className={styles.statLabel}>Laengster Streak</span></div>

src/pages/views/commcoach/CommcoachSettingsView.tsx:130

  • Text: 'Einstellungen speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {saving ? 'Speichern...' : 'Einstellungen speichern'}

src/pages/views/graphicalEditor/GraphicalEditorPage.tsx:105

  • Text: 'Graphical Editor'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2>Graphical Editor</h2>

src/pages/views/graphicalEditor/GraphicalEditorPage.tsx:106

  • Text: 'Keine Feature-Instanz gefunden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Feature-Instanz gefunden.</p>

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:80

  • Text: 'Fehler beim Laden der Vorlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler beim Laden der Vorlagen');

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:95

  • Text: 'Vorlage gelöscht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Vorlage gelöscht');

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:99

  • Text: 'Löschen fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Löschen fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:112

  • Text: 'Vorlage als Workflow kopiert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Vorlage als Workflow kopiert');

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:114

  • Text: 'Kopieren fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Kopieren fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:131

  • Text: 'Scope-Änderung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Scope-Änderung fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:144

  • Text: 'Neuer Name:'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const newLabel = await promptInput('Neuer Name:', {

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:145

  • Text: 'Vorlage umbenennen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Vorlage umbenennen',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:152

  • Text: 'Vorlage umbenannt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Vorlage umbenannt');

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:155

  • Text: 'Umbenennen fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Umbenennen fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:170

  • Text: 'Vorlage'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'label', label: 'Vorlage', type: 'string', width: 220, sortable: true },

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:173

  • Text: 'Scope'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Scope',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:180

  • Text: 'Freigegeben'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Freigegeben',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:192

  • Text: 'Erstellt von'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Erstellt von',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:198

  • Text: 'Erstellt'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Erstellt',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:208

  • Text: 'Keine Feature-Instanz gefunden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Feature-Instanz gefunden.</p>

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:259

  • Text: 'Im Editor öffnen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Im Editor öffnen',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:264

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:278

  • Text: 'Als Workflow kopieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Als Workflow kopieren',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:285

  • Text: 'Scope ändern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Scope ändern',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:293

  • Text: 'Keine Vorlagen gefunden. Erstelle eine Vorlage aus einem bestehenden Workflow.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Vorlagen gefunden. Erstelle eine Vorlage aus einem bestehenden Workflow."

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:310

  • Text: 'translate(-50%, -50%)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: position: 'fixed', top: '50%', left: '50%', transform: 'translate(-50%, -50%)',

src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx:316

  • Text: 'Scope ändern'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4 style={{ margin: '0 0 8px', fontSize: '0.9rem' }}>Scope ändern</h4>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:71

  • Text: 'Fehler beim Laden der Workflows'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler beim Laden der Workflows');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:86

  • Text: 'Workflow gelöscht'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Workflow gelöscht');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:90

  • Text: 'Löschen fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Löschen fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:117

  • Text: 'Workflow aktiviert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess(next ? 'Workflow aktiviert' : 'Workflow deaktiviert');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:117

  • Text: 'Workflow deaktiviert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess(next ? 'Workflow aktiviert' : 'Workflow deaktiviert');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:120

  • Text: 'Status-Update fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Status-Update fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:131

  • Text: 'Neuer Name:'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const newLabel = await promptInput('Neuer Name:', {

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:132

  • Text: 'Workflow umbenennen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Workflow umbenennen',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:139

  • Text: 'Workflow umbenannt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Workflow umbenannt');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:142

  • Text: 'Umbenennen fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Umbenennen fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:162

  • Text: 'Workflow gestartet und bei Human Task pausiert. Öffne Workflows & Tasks.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Workflow gestartet und bei Human Task pausiert. Öffne Workflows & Tasks.');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:164

  • Text: 'Workflow ausgeführt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Workflow ausgeführt');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:168

  • Text: 'Ausführung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(result?.error || 'Ausführung fehlgeschlagen');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:171

  • Text: 'Ausführung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(Fehler: ${e?.message || 'Ausführung fehlgeschlagen'});

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:180

  • Text: 'Workflow'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'label', label: 'Workflow', type: 'string', width: 200, sortable: true },

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:183

  • Text: 'Aktiv'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Aktiv',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:195

  • Text: 'Läuft'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Läuft',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:207

  • Text: 'Steht bei'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Steht bei',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:217

  • Text: 'Erstellt'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Erstellt',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:224

  • Text: 'Zuletzt gestartet'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Zuletzt gestartet',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:231

  • Text: 'Läufe'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Läufe',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:247

  • Text: 'Keine Feature-Instanz gefunden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Feature-Instanz gefunden.</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:256

  • Text: 'Gespeicherte Workflows'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h1 className={styles.pageTitle}>Gespeicherte Workflows</h1>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:303

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:332

  • Text: 'Ausführen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Ausführen',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx:340

  • Text: 'Keine Workflows gefunden. Erstelle einen im Editor.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Workflows gefunden. Erstelle einen im Editor."

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:34

  • Text: 'input.upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'input.upload': 'Upload',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:34

  • Text: 'Upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'input.upload': 'Upload',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:36

  • Text: 'Prüfung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'input.review': 'Prüfung',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:38

  • Text: 'Bestätigung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'input.confirmation': 'Bestätigung',

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:159

  • Text: 'Workflow gestartet und bei Human Task pausiert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Workflow gestartet und bei Human Task pausiert.');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:161

  • Text: 'Workflow gestartet'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Workflow gestartet');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:165

  • Text: 'Ausführung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError(result?.error || 'Ausführung fehlgeschlagen');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:169

  • Text: 'Ausführung fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: (e as { message?: string })?.message ?? 'Ausführung fehlgeschlagen';

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:185

  • Text: 'Keine Feature-Instanz gefunden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Feature-Instanz gefunden.</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:194

  • Text: 'Lade Tasks…'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Lade Tasks…</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:212

  • Text: 'Keine offenen Tasks'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.empty}>Keine offenen Tasks</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:236

  • Text: 'Erledigte Tasks'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Erledigte Tasks</span>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:244

  • Text: 'Keine erledigten Tasks'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.empty}>Keine erledigten Tasks</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:291

  • Text: 'Workflows starten'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <aside className={styles.startSidebar} aria-label="Workflows starten">

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:292

  • Text: 'Workflow starten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.startSidebarTitle}>Workflow starten</h3>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:315

  • Text: 'Workflow ausführen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Workflow ausführen"

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:387

  • Text: 'Kein Output (z.B. Workflow ohne file.create)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.empty}>Kein Output (z.B. Workflow ohne file.create)</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:444

  • Text: 'Aufgaben konnten nicht geladen werden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setErr('Aufgaben konnten nicht geladen werden.');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:482

  • Text: '— Aufgabe wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Aufgabe wählen —</option>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:596

  • Text: '— Status wählen —'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">— Status wählen —</option>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:630

  • Text: 'Formular ausfüllen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Formular ausfüllen"

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:644

  • Text: 'Wird gesendet…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {submitting ? 'Wird gesendet…' : 'Absenden'}

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:736

  • Text: 'Bestätigen?'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <p>{(config.question as string) ?? 'Bestätigen?'}</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:743

  • Text: 'Bestätigen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {typeof config.confirmLabel === 'string' ? config.confirmLabel : 'Bestätigen'}

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:755

  • Text: 'input.upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: case 'input.upload': {

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:765

  • Text: 'Nur eine Datei erlaubt.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setUploadError('Nur eine Datei erlaubt.');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:808

  • Text: 'Upload fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const msg = (err as { response?: { data?: { detail?: string } }; message?: string })?.response?.data?.detail ?? (err as Error)?.message ?? 'Upload fehlgeschlagen';

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:822

  • Text: 'Bitte mindestens eine Datei hochladen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setUploadError('Bitte mindestens eine Datei hochladen.');

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:851

  • Text: 'Wird hochgeladen…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <FaUpload /> {uploading ? 'Wird hochgeladen…' : 'Datei(en) auswählen'}

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:851

  • Text: 'Datei(en) auswählen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <FaUpload /> {uploading ? 'Wird hochgeladen…' : 'Datei(en) auswählen'}

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:867

  • Text: 'Wird gesendet…'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {submitting ? 'Wird gesendet…' : 'Absenden'}

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:875

  • Text: 'Review Content anzeigen + Feedback'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Review Content anzeigen + Feedback</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:877

  • Text: 'Feedback...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Feedback..."

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:893

  • Text: 'Unbekannter Task-Typ: {nodeType}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Unbekannter Task-Typ: {nodeType}</p>

src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx:922

  • Text: 'Fällig'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.metaLabel}>Fällig</span>

src/pages/views/neutralization/NeutralizationView.tsx:75

  • Text: 'Error loading configuration'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Error loading configuration';

src/pages/views/neutralization/NeutralizationView.tsx:77

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', message);

src/pages/views/neutralization/NeutralizationView.tsx:94

  • Text: 'Missing mandate or instance context'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('Missing mandate or instance context');

src/pages/views/neutralization/NeutralizationView.tsx:105

  • Text: 'Configuration saved successfully.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Saved', 'Configuration saved successfully.');

src/pages/views/neutralization/NeutralizationView.tsx:112

  • Text: 'Failed to save configuration'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Failed to save configuration';

src/pages/views/neutralization/NeutralizationView.tsx:114

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', message);

src/pages/views/neutralization/NeutralizationView.tsx:123

  • Text: 'Loading configuration...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.loading}>Loading configuration...</div>;

src/pages/views/neutralization/NeutralizationView.tsx:128

  • Text: 'Neutralization Configuration'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Neutralization Configuration</h3>

src/pages/views/neutralization/NeutralizationView.tsx:137

  • Text: 'Dismiss'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button type="button" onClick={dismissError} aria-label="Dismiss">

src/pages/views/neutralization/NeutralizationView.tsx:144

  • Text: 'Names to Parse (one per line):'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label htmlFor="names-to-parse">Names to Parse (one per line):</label>

src/pages/views/neutralization/NeutralizationView.tsx:150

  • Text: 'Enter names to parse, one per line...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Enter names to parse, one per line..."

src/pages/views/neutralization/NeutralizationView.tsx:162

  • Text: 'Save Configuration'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {saving ? 'Saving...' : 'Save Configuration'}

src/pages/views/neutralization/NeutralizationView.tsx:217

  • Text: 'Failed to load SharePoint sites'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setBrowseError(typeof detail === 'string' ? detail : 'Failed to load SharePoint sites');

src/pages/views/neutralization/NeutralizationView.tsx:236

  • Text: 'Failed to load folders'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setBrowseError(typeof detail === 'string' ? detail : 'Failed to load folders');

src/pages/views/neutralization/NeutralizationView.tsx:321

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Please enter text to neutralize.');

src/pages/views/neutralization/NeutralizationView.tsx:321

  • Text: 'Please enter text to neutralize.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Please enter text to neutralize.');

src/pages/views/neutralization/NeutralizationView.tsx:329

  • Text: 'Text neutralized successfully.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Done', 'Text neutralized successfully.');

src/pages/views/neutralization/NeutralizationView.tsx:335

  • Text: 'Failed to neutralize text'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Failed to neutralize text';

src/pages/views/neutralization/NeutralizationView.tsx:336

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', message);

src/pages/views/neutralization/NeutralizationView.tsx:360

  • Text: 'File neutralized. Download below or find it in your Files.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Done', 'File neutralized. Download below or find it in your Files.');

src/pages/views/neutralization/NeutralizationView.tsx:364

  • Text: 'File neutralized. Download or find in Files.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Done', result.neutralized_file_id ? 'File neutralized. Download or find in Files.' : 'File neutralized.');

src/pages/views/neutralization/NeutralizationView.tsx:364

  • Text: 'File neutralized.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Done', result.neutralized_file_id ? 'File neutralized. Download or find in Files.' : 'File neutralized.');

src/pages/views/neutralization/NeutralizationView.tsx:366

  • Text: 'No result returned'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const err = (result.processed_info as { error?: string })?.error || 'No result returned';

src/pages/views/neutralization/NeutralizationView.tsx:368

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', err);

src/pages/views/neutralization/NeutralizationView.tsx:378

  • Text: 'Failed to neutralize file'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Failed to neutralize file';

src/pages/views/neutralization/NeutralizationView.tsx:379

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', message);

src/pages/views/neutralization/NeutralizationView.tsx:392

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Failed to download file');

src/pages/views/neutralization/NeutralizationView.tsx:392

  • Text: 'Failed to download file'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Failed to download file');

src/pages/views/neutralization/NeutralizationView.tsx:409

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Failed to download file');

src/pages/views/neutralization/NeutralizationView.tsx:409

  • Text: 'Failed to download file'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Failed to download file');

src/pages/views/neutralization/NeutralizationView.tsx:423

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'No file data available to download. The neutralized file may not have been generated.');

src/pages/views/neutralization/NeutralizationView.tsx:423

  • Text: 'No file data available to download. The neutralized file may not have been generated.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'No file data available to download. The neutralized file may not have been generated.');

src/pages/views/neutralization/NeutralizationView.tsx:428

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'No neutralized text to resolve.');

src/pages/views/neutralization/NeutralizationView.tsx:428

  • Text: 'No neutralized text to resolve.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'No neutralized text to resolve.');

src/pages/views/neutralization/NeutralizationView.tsx:435

  • Text: 'Text resolved successfully.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Done', 'Text resolved successfully.');

src/pages/views/neutralization/NeutralizationView.tsx:441

  • Text: 'Failed to resolve text'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Failed to resolve text';

src/pages/views/neutralization/NeutralizationView.tsx:442

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', message);

src/pages/views/neutralization/NeutralizationView.tsx:455

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Both SharePoint source and target paths are required.');

src/pages/views/neutralization/NeutralizationView.tsx:455

  • Text: 'Both SharePoint source and target paths are required.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Both SharePoint source and target paths are required.');

src/pages/views/neutralization/NeutralizationView.tsx:462

  • Text: 'SharePoint files processed successfully.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Done', result.message || 'SharePoint files processed successfully.');

src/pages/views/neutralization/NeutralizationView.tsx:464

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', result.message || 'Processing failed');

src/pages/views/neutralization/NeutralizationView.tsx:464

  • Text: 'Processing failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', result.message || 'Processing failed');

src/pages/views/neutralization/NeutralizationView.tsx:471

  • Text: 'Failed to process SharePoint files'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: 'Failed to process SharePoint files';

src/pages/views/neutralization/NeutralizationView.tsx:472

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', message);

src/pages/views/neutralization/NeutralizationView.tsx:481

  • Text: 'Manual Text & File Neutralization'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Manual Text &amp; File Neutralization</h3>

src/pages/views/neutralization/NeutralizationView.tsx:488

  • Text: '1. Upload file to neutralize:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>1. Upload file to neutralize:</label>

src/pages/views/neutralization/NeutralizationView.tsx:503

  • Text: 'Upload & Neutralize File'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {neutralizing ? 'Processing...' : 'Upload & Neutralize File'}

src/pages/views/neutralization/NeutralizationView.tsx:511

  • Text: 'Neutralized File'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: Download {fileResult.fileName || 'Neutralized File'}

src/pages/views/neutralization/NeutralizationView.tsx:523

  • Text: '2. Or paste text:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label htmlFor="input-text">2. Or paste text:</label>

src/pages/views/neutralization/NeutralizationView.tsx:529

  • Text: 'Enter text to neutralize...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Enter text to neutralize..."

src/pages/views/neutralization/NeutralizationView.tsx:540

  • Text: 'Neutralize Text'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {neutralizing ? 'Neutralizing...' : 'Neutralize Text'}

src/pages/views/neutralization/NeutralizationView.tsx:548

  • Text: 'Resolve Text'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {resolving ? 'Resolving...' : 'Resolve Text'}

src/pages/views/neutralization/NeutralizationView.tsx:553

  • Text: '3. Or neutralize SharePoint files:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label>3. Or neutralize SharePoint files:</label>

src/pages/views/neutralization/NeutralizationView.tsx:563

  • Text: 'SharePoint source path...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="SharePoint source path..."

src/pages/views/neutralization/NeutralizationView.tsx:570

  • Text: 'Browse SharePoint'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}

src/pages/views/neutralization/NeutralizationView.tsx:570

  • Text: 'Add a Microsoft connection first (Basisdaten → Connections)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}

src/pages/views/neutralization/NeutralizationView.tsx:584

  • Text: 'SharePoint target path...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="SharePoint target path..."

src/pages/views/neutralization/NeutralizationView.tsx:591

  • Text: 'Browse SharePoint'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}

src/pages/views/neutralization/NeutralizationView.tsx:591

  • Text: 'Add a Microsoft connection first (Basisdaten → Connections)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={hasMsftConnection ? 'Browse SharePoint' : 'Add a Microsoft connection first (Basisdaten → Connections)'}

src/pages/views/neutralization/NeutralizationView.tsx:606

  • Text: 'Enter source and target SharePoint paths to enable'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Enter source and target SharePoint paths to enable'

src/pages/views/neutralization/NeutralizationView.tsx:610

  • Text: 'Neutralize SharePoint Files'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {processingSharepoint ? 'Processing...' : 'Neutralize SharePoint Files'}

src/pages/views/neutralization/NeutralizationView.tsx:617

  • Text: 'Neutralized Text:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label htmlFor="neutralized-text">Neutralized Text:</label>

src/pages/views/neutralization/NeutralizationView.tsx:653

  • Text: 'Loading sites...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loading}>Loading sites...</div>

src/pages/views/neutralization/NeutralizationView.tsx:663

  • Text: 'Select a site...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">Select a site...</option>

src/pages/views/neutralization/NeutralizationView.tsx:678

  • Text: 'Loading folders...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loading}>Loading folders...</div>

src/pages/views/neutralization/NeutralizationView.tsx:740

  • Text: 'Configuration'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { id: 'config', label: 'Configuration', content: <ConfigTab /> },

src/pages/views/neutralization/NeutralizationView.tsx:741

  • Text: 'Playground'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { id: 'playground', label: 'Playground', content: <PlaygroundTab /> },

src/pages/views/realestate/RealEstateDashboardView.tsx:57

  • Text: 'Deine Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {instance.userRoles.length === 1 ? 'Deine Rolle' : 'Deine Rollen'}

src/pages/views/realestate/RealEstateDashboardView.tsx:57

  • Text: 'Deine Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {instance.userRoles.length === 1 ? 'Deine Rolle' : 'Deine Rollen'}

src/pages/views/realestate/RealEstateInstanceRolesPlaceholder.tsx:4

  • Text: 'Rollen & Rechte'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * Platzhalter für die View "Rollen & Rechte" bei Real-Estate-Instanzen.

src/pages/views/realestate/RealEstateInstanceRolesPlaceholder.tsx:16

  • Text: 'Rollen & Rechte'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3>Rollen & Rechte</h3>

src/pages/views/realestate/RealEstateParcelsView.tsx:134

  • Text: 'Fehler beim Laden der Parzellen: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Parzellen: {error}</p>

src/pages/views/realestate/RealEstateParcelsView.tsx:147

  • Text: 'Parzellen verwalten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Parzellen verwalten</p>

src/pages/views/realestate/RealEstateParcelsView.tsx:190

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/views/realestate/RealEstateParcelsView.tsx:205

  • Text: 'Keine Parzellen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Parzellen gefunden"

src/pages/views/realestate/RealEstateParcelsView.tsx:214

  • Text: 'Neue Parzelle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isCreateMode ? 'Neue Parzelle' : 'Parzelle bearbeiten'}

src/pages/views/realestate/RealEstateParcelsView.tsx:214

  • Text: 'Parzelle bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isCreateMode ? 'Neue Parzelle' : 'Parzelle bearbeiten'}

src/pages/views/realestate/RealEstateParcelsView.tsx:224

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/views/realestate/RealEstateProjectsView.tsx:124

  • Text: 'Fehler beim Laden der Projekte: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Projekte: {error}</p>

src/pages/views/realestate/RealEstateProjectsView.tsx:137

  • Text: 'Projekte verwalten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Projekte verwalten</p>

src/pages/views/realestate/RealEstateProjectsView.tsx:164

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ...(canDelete ? [{ type: 'delete' as const, title: 'Löschen', loading: (row: RealEstateProject) => deletingItems.has(row.id) }] : []),

src/pages/views/realestate/RealEstateProjectsView.tsx:168

  • Text: 'Keine Projekte gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Projekte gefunden"

src/pages/views/realestate/RealEstateProjectsView.tsx:176

  • Text: 'Neues Projekt'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <h2 className={styles.modalTitle}>{isCreateMode ? 'Neues Projekt' : 'Projekt bearbeiten'}</h2>

src/pages/views/realestate/RealEstateProjectsView.tsx:176

  • Text: 'Projekt bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <h2 className={styles.modalTitle}>{isCreateMode ? 'Neues Projekt' : 'Projekt bearbeiten'}</h2>

src/pages/views/realestate/RealEstateProjectsView.tsx:183

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/views/realestate/pek/PekLocationInput.tsx:37

  • Text: 'z.B. Bundesplatz 3'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="z.B. Bundesplatz 3"

src/pages/views/realestate/pek/PekLocationInput.tsx:38

  • Text: 'Adresse oder Parzelle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: label="Adresse oder Parzelle"

src/pages/views/realestate/pek/PekMapView.tsx:33

  • Text: 'Alle Parzellen anzeigen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Alle Parzellen anzeigen</span>

src/pages/views/realestate/pek/PekMapView.tsx:53

  • Text: 'Klicken Sie auf die Karte, um einen Standort auszuwählen, oder suchen Sie nach einer Adresse oben.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Klicken Sie auf die Karte, um einen Standort auszuwählen, oder suchen Sie nach einer Adresse oben."

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:12

  • Text: 'Mein Account'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * Supports "Mein Account" login with saved credentials and MFA relay.

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:55

  • Text: 'Fehler beim Laden der Sitzungen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Laden der Sitzungen');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:103

  • Text: 'MFA-Zeitlimit ueberschritten. Bitte erneut versuchen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('MFA-Zeitlimit ueberschritten. Bitte erneut versuchen.');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:139

  • Text: 'Fehler beim Speichern der Zugangsdaten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Speichern der Zugangsdaten');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:171

  • Text: 'Fehler beim Starten der Sitzung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Starten der Sitzung');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:191

  • Text: 'Fehler beim Senden des MFA-Codes'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Senden des MFA-Codes');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:202

  • Text: 'Fehler beim Loeschen der Zugangsdaten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Loeschen der Zugangsdaten');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:211

  • Text: 'Fehler beim Stoppen der Sitzung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Stoppen der Sitzung');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:220

  • Text: 'Fehler beim Loeschen der Sitzung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Loeschen der Sitzung');

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:272

  • Text: 'Code eingeben'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Code eingeben"

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:300

  • Text: 'Neue Bot-Sitzung starten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.cardTitle}>Neue Bot-Sitzung starten</h3>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:306

  • Text: 'Teams Meeting-Link *'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Teams Meeting-Link *</label>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:325

  • Text: 'System-Bot (authentifiziert)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {_isSysAdmin && <option value="systemBot">System-Bot (authentifiziert)</option>}

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:326

  • Text: 'Anonymer Gast'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="anonymous">Anonymer Gast</option>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:327

  • Text: 'Mein Account'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="userAccount">Mein Account</option>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:354

  • Text: 'Microsoft E-Mail'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Microsoft E-Mail</label>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:358

  • Text: 'name@example.com'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="name@example.com"

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:369

  • Text: 'Microsoft-Passwort'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Microsoft-Passwort"

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:393

  • Text: 'Bot-Name (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Bot-Name (optional)</label>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:397

  • Text: 'AI Assistant'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="AI Assistant"

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:405

  • Text: 'Session-Kontext (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Session-Kontext (optional)</label>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:408

  • Text: 'Agenda, Hintergrundinformationen, Dokumente oder andere Informationen fuer den Bot...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Agenda, Hintergrundinformationen, Dokumente oder andere Informationen fuer den Bot..."

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:426

  • Text: 'Wird gestartet...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isStarting ? 'Wird gestartet...' : 'Bot ins Meeting senden'}

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:426

  • Text: 'Bot ins Meeting senden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isStarting ? 'Wird gestartet...' : 'Bot ins Meeting senden'}

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:435

  • Text: 'Aktive Sitzungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Aktive Sitzungen</h3>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:448

  • Text: "Seit: {new Date(session.startedAt).toLocaleTimeString('de-CH')}"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: {session.startedAt && <span>Seit: {new Date(session.startedAt).toLocaleTimeString('de-CH')}</span>}

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:451

  • Text: 'navigate(/mandates/${mandateId}/${featureCode}/${instanceId}/sessions?sessionId=${session.id})}>Live ansehen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.viewButton} onClick={() => navigate(/mandates/${mandateId}/${featureCode}/${instanceId}/sessions?sessionId=${session.id})}>Live ansehen</button>

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:467

  • Text: 'Lade Sitzungen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {loading ? 'Lade Sitzungen...' :Vergangene Sitzungen (${pastSessions.length})}

src/pages/views/teamsbot/TeamsbotDashboardView.tsx:470

  • Text: 'Noch keine vergangenen Sitzungen.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.emptyState}>Noch keine vergangenen Sitzungen.</p>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:87

  • Text: 'Fehler beim Laden der Sitzung'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Laden der Sitzung');

src/pages/views/teamsbot/TeamsbotSessionView.tsx:199

  • Text: 'Unbekannter Fehler'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errMsg = errData.message || 'Unbekannter Fehler';

src/pages/views/teamsbot/TeamsbotSessionView.tsx:280

  • Text: 'Lade Sitzung...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: if (loading) return <div className={styles.loading}>Lade Sitzung...</div>;

src/pages/views/teamsbot/TeamsbotSessionView.tsx:283

  • Text: 'Keine Sitzungen vorhanden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Sitzungen vorhanden.</p>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:287

  • Text: 'Sitzung nicht gefunden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: if (!session) return <div className={styles.errorBanner}>Sitzung nicht gefunden</div>;

src/pages/views/teamsbot/TeamsbotSessionView.tsx:305

  • Text: '2px solid #4A90D9'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: s.id === sessionId ? '2px solid #4A90D9' : '1px solid #ddd',

src/pages/views/teamsbot/TeamsbotSessionView.tsx:305

  • Text: '1px solid #ddd'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: s.id === sessionId ? '2px solid #4A90D9' : '1px solid #ddd',

src/pages/views/teamsbot/TeamsbotSessionView.tsx:313

  • Text: ' (aktiv)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {['active', 'joining', 'pending'].includes(s.status) && ' (aktiv)'}

src/pages/views/teamsbot/TeamsbotSessionView.tsx:314

  • Text: ' (beendet)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {s.status === 'ended' && ' (beendet)'}

src/pages/views/teamsbot/TeamsbotSessionView.tsx:331

  • Text: 'Sitzung beenden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <button className={styles.stopButton} onClick={_handleStop}>Sitzung beenden</button>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:342

  • Text: 'Transkript ({transcripts.length} Segmente)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4 className={styles.panelTitle}>Transkript ({transcripts.length} Segmente)</h4>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:358

  • Text: 'Noch kein Transkript vorhanden.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyState}>Noch kein Transkript vorhanden.</div>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:365

  • Text: 'Bot-Antworten ({botResponses.length})'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4 className={styles.panelTitle}>Bot-Antworten ({botResponses.length})</h4>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:376

  • Text: 'Reasoning: {r.reasoning}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <em>Reasoning: {r.reasoning}</em>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:389

  • Text: 'Noch keine Bot-Antworten.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyState}>Noch keine Bot-Antworten.</div>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:405

  • Text: 'TTS Delivery Status'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4 className={styles.panelTitle}>TTS Delivery Status</h4>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:407

  • Text: 'Noch keine TTS-Events.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyState}>Noch keine TTS-Events.</div>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:414

  • Text: "ws: {ev.hasWebSocket ? 'yes' : 'no'}"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>ws: {ev.hasWebSocket ? 'yes' : 'no'}</span>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:459

  • Text: 'Screenshots laden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {screenshotsLoading ? 'Laden...' : screenshotsLoaded ? 'Aktualisieren' : 'Screenshots laden'}

src/pages/views/teamsbot/TeamsbotSessionView.tsx:463

  • Text: 'Keine Screenshots fuer diese Session.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyState}>Keine Screenshots fuer diese Session.</div>

src/pages/views/teamsbot/TeamsbotSessionView.tsx:474

  • Text: 'noopener noreferrer'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: rel="noopener noreferrer"

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:8

  • Text: 'Wavenet A'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: /** Format voice name for display: "de-DE-Wavenet-A" -> "Wavenet A" + gender */

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:60

  • Text: 'Fehler beim Laden der Konfiguration'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Laden der Konfiguration');

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:81

  • Text: 'Einstellungen gespeichert'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setSuccessMsg('Einstellungen gespeichert');

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:84

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Fehler beim Speichern');

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:117

  • Text: 'AI Assistant'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const botName = formData.botName || 'AI Assistant';

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:135

  • Text: 'Stimmtest fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(result.error || 'Stimmtest fehlgeschlagen');

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:139

  • Text: 'Stimmtest fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Stimmtest fehlgeschlagen');

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:146

  • Text: 'Lade Konfiguration...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: if (loading) return <div className={styles.loading}>Lade Konfiguration...</div>;

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:167

  • Text: 'AI Assistant'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="AI Assistant"

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:170

  • Text: 'Nyla Larsson'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: Default-Name fuer den Bot im Meeting. Falls keiner angegeben, wird der Name des System-Bots verwendet (z.B. "Nyla Larsson").

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:186

  • Text: 'Beschreibe, wie sich der Bot im Meeting verhalten soll...'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Beschreibe, wie sich der Bot im Meeting verhalten soll..."

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:188

  • Text: 'Instruktionen fuer den AI-Bot: Wann und wie soll er antworten?'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.hint}>Instruktionen fuer den AI-Bot: Wann und wie soll er antworten?</span>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:198

  • Text: 'Automatisch - AI entscheidet selbst'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="auto">Automatisch - AI entscheidet selbst</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:199

  • Text: 'Manuell - Antworten muessen bestaetigt werden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="manual">Manuell - Antworten muessen bestaetigt werden</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:200

  • Text: 'Nur Transkription - Keine AI-Antworten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="transcribeOnly">Nur Transkription - Keine AI-Antworten</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:211

  • Text: 'Nur Sprache - Bot antwortet per Audio'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="voice">Nur Sprache - Bot antwortet per Audio</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:212

  • Text: 'Nur Chat - Bot antwortet per Textnachricht'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="chat">Nur Chat - Bot antwortet per Textnachricht</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:213

  • Text: 'Sprache + Chat - Bot antwortet per Audio und Text'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="both">Sprache + Chat - Bot antwortet per Audio und Text</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:215

  • Text: 'Wie soll der Bot im Meeting antworten?'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.hint}>Wie soll der Bot im Meeting antworten?</span>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:225

  • Text: 'Automatisch - System waehlt basierend auf Join-Modus'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="auto">Automatisch - System waehlt basierend auf Join-Modus</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:226

  • Text: 'Captions - Teams Live-Captions (nur Englisch verfuegbar)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="caption">Captions - Teams Live-Captions (nur Englisch verfuegbar)</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:227

  • Text: 'Audio-Stream - Echtzeit-Spracherkennung ueber Gateway (alle Sprachen)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="audio">Audio-Stream - Echtzeit-Spracherkennung ueber Gateway (alle Sprachen)</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:252

  • Text: 'Deutsch (Deutschland)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="de-DE">Deutsch (Deutschland)</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:253

  • Text: 'English (US)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="en-US">English (US)</option>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:258

  • Text: 'Sprache fuer Captions und Sprachausgabe ({languages.length} Sprachen verfuegbar)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.hint}>Sprache fuer Captions und Sprachausgabe ({languages.length} Sprachen verfuegbar)</span>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:282

  • Text: 'Stimme testen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Stimme testen"

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:290

  • Text: 'Lade Stimmen...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {loadingVoices ? 'Lade Stimmen...' :${voices.length} Stimmen verfuegbar - klicke Test fuer Vorschau}

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:297

  • Text: 'Erweiterte Einstellungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4 className={styles.sectionTitle}>Erweiterte Einstellungen</h4>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:301

  • Text: 'Analyse-Intervall (Sek.)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Analyse-Intervall (Sek.)</label>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:310

  • Text: 'Periodisches Analyse-Intervall'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.hint}>Periodisches Analyse-Intervall</span>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:314

  • Text: 'Cooldown (Sek.)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Cooldown (Sek.)</label>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:323

  • Text: 'Min. Abstand zwischen AI-Calls'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.hint}>Min. Abstand zwischen AI-Calls</span>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:327

  • Text: 'Kontext-Fenster (Segmente)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Kontext-Fenster (Segmente)</label>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:336

  • Text: 'Anzahl Transkript-Segmente fuer AI-Kontext'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.hint}>Anzahl Transkript-Segmente fuer AI-Kontext</span>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:341

  • Text: 'Browser Bot URL (optional)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <label className={styles.label}>Browser Bot URL (optional)</label>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:347

  • Text: 'Automatisch aus Umgebungskonfiguration'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Automatisch aus Umgebungskonfiguration"

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:349

  • Text: 'URL des Browser Bot Service. Leer lassen fuer Standard-Konfiguration.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span className={styles.hint}>URL des Browser Bot Service. Leer lassen fuer Standard-Konfiguration.</span>

src/pages/views/teamsbot/TeamsbotSettingsView.tsx:375

  • Text: 'Konfiguration speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {saving ? 'Speichern...' : 'Konfiguration speichern'}

src/pages/views/trustee/TrusteeAccountingSettingsView.tsx:193

  • Text: "· {t('Letzter Sync:')} {existingConfig.lastSyncStatus}"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <> &middot; {t('Letzter Sync:')} {existingConfig.lastSyncStatus}</>

src/pages/views/trustee/TrusteeAccountingSettingsView.tsx:209

  • Text: "· {t('Status:')} {existingConfig.lastSyncStatus}"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <> &middot; {t('Status:')} {existingConfig.lastSyncStatus}</>

src/pages/views/trustee/TrusteeAccountingSettingsView.tsx:293

  • Text: 'Save & Test'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>Save & Test</h4>

src/pages/views/trustee/TrusteeAccountingSettingsView.tsx:458

  • Text: "· {t('Letzter Import:')} {new Date(importStatus.lastSyncAt * 1000).toLocaleString()}"
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <> &middot; {t('Letzter Import:')} {new Date(importStatus.lastSyncAt * 1000).toLocaleString()}</>

src/pages/views/trustee/TrusteeDashboardView.tsx:81

  • Text: 'Not configured'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Not configured'

src/pages/views/trustee/TrusteeDashboardView.tsx:99

  • Text: 'Deine Rolle'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {(instance?.userRoles?.length || 0) === 1 ? 'Deine Rolle' : 'Deine Rollen'}

src/pages/views/trustee/TrusteeDashboardView.tsx:99

  • Text: 'Deine Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {(instance?.userRoles?.length || 0) === 1 ? 'Deine Rolle' : 'Deine Rollen'}

src/pages/views/trustee/TrusteeDocumentsView.tsx:139

  • Text: 'Fehler beim Herunterladen des Dokuments.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'Fehler beim Herunterladen des Dokuments.');

src/pages/views/trustee/TrusteeDocumentsView.tsx:171

  • Text: 'Fehler beim Laden der Dokumente: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Dokumente: {error}</p>

src/pages/views/trustee/TrusteeDocumentsView.tsx:184

  • Text: 'Belege und Dokumente verwalten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Belege und Dokumente verwalten</p>

src/pages/views/trustee/TrusteeDocumentsView.tsx:225

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/views/trustee/TrusteeDocumentsView.tsx:247

  • Text: 'Keine Dokumente gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Dokumente gefunden"

src/pages/views/trustee/TrusteeDocumentsView.tsx:257

  • Text: 'Neues Dokument'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isCreateMode ? 'Neues Dokument' : 'Dokument bearbeiten'}

src/pages/views/trustee/TrusteeDocumentsView.tsx:257

  • Text: 'Dokument bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isCreateMode ? 'Neues Dokument' : 'Dokument bearbeiten'}

src/pages/views/trustee/TrusteeDocumentsView.tsx:270

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:71

  • Text: 'Trustee Expense Import'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const EXPENSE_IMPORT_LABEL = 'Trustee Expense Import';

src/pages/views/trustee/TrusteeExpenseImportView.tsx:72

  • Text: '0 22 * * *'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const DAILY_CRON = '0 22 * * *';

src/pages/views/trustee/TrusteeExpenseImportView.tsx:241

  • Text: 'Failed to load SharePoint sites'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(_parseErrorDetail(err.response?.data?.detail) || 'Failed to load SharePoint sites');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:263

  • Text: 'Failed to load folders'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(_parseErrorDetail(err.response?.data?.detail) || 'Failed to load folders');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:318

  • Text: 'Microsoft connection failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err.message || 'Microsoft connection failed');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:326

  • Text: 'Missing Connection'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing Connection', 'Please select a Microsoft connection first.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:326

  • Text: 'Please select a Microsoft connection first.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing Connection', 'Please select a Microsoft connection first.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:330

  • Text: 'Missing Folder'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing Folder', 'Please select a SharePoint folder first.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:330

  • Text: 'Please select a SharePoint folder first.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing Folder', 'Please select a SharePoint folder first.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:334

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Feature instance not found. Please refresh the page.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:334

  • Text: 'Feature instance not found. Please refresh the page.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', 'Feature instance not found. Please refresh the page.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:357

  • Text: 'Daily at 22:00'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Daily at 22:00',

src/pages/views/trustee/TrusteeExpenseImportView.tsx:373

  • Text: 'Expense import workflow updated and activated!'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Expense import workflow updated and activated!'

src/pages/views/trustee/TrusteeExpenseImportView.tsx:374

  • Text: 'Expense import workflow updated and deactivated.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Expense import workflow updated and deactivated.';

src/pages/views/trustee/TrusteeExpenseImportView.tsx:376

  • Text: 'Success'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Success', msg);

src/pages/views/trustee/TrusteeExpenseImportView.tsx:387

  • Text: 'Expense import workflow created and activated! It will run daily at 22:00.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const msg = 'Expense import workflow created and activated! It will run daily at 22:00.';

src/pages/views/trustee/TrusteeExpenseImportView.tsx:389

  • Text: 'Success'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Success', msg);

src/pages/views/trustee/TrusteeExpenseImportView.tsx:404

  • Text: 'Failed to save workflow'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMsg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to save workflow';

src/pages/views/trustee/TrusteeExpenseImportView.tsx:406

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', errorMsg);

src/pages/views/trustee/TrusteeExpenseImportView.tsx:414

  • Text: 'Missing data'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing data', 'Please select connection and folder first.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:414

  • Text: 'Please select connection and folder first.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing data', 'Please select connection and folder first.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:431

  • Text: 'Workflow started. Extract → Process → Sync will run once.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Started', 'Workflow started. Extract → Process → Sync will run once.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:433

  • Text: 'Failed to start workflow'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const msg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to start workflow';

src/pages/views/trustee/TrusteeExpenseImportView.tsx:435

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', msg);

src/pages/views/trustee/TrusteeExpenseImportView.tsx:454

  • Text: 'Expense import workflow deactivated.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setSuccessMessage('Expense import workflow deactivated.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:455

  • Text: 'Expense import workflow deactivated.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Deactivated', 'Expense import workflow deactivated.');

src/pages/views/trustee/TrusteeExpenseImportView.tsx:458

  • Text: 'Failed to deactivate workflow'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMsg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to deactivate workflow';

src/pages/views/trustee/TrusteeExpenseImportView.tsx:460

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', errorMsg);

src/pages/views/trustee/TrusteeExpenseImportView.tsx:469

  • Text: 'Expense Import Setup'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Expense Import Setup</h3>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:478

  • Text: 'How it works'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="How it works"

src/pages/views/trustee/TrusteeExpenseImportView.tsx:484

  • Text: 'How it works:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>How it works:</strong>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:486

  • Text: 'Place expense PDF documents (receipts, invoices) in the selected SharePoint folder'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Place expense PDF documents (receipts, invoices) in the selected SharePoint folder</li>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:487

  • Text: 'The system runs daily at 22:00 and processes all PDF files'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>The system runs daily at 22:00 and processes all PDF files</li>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:488

  • Text: 'AI extracts expense data: date, amount, VAT, company, description'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>AI extracts expense data: date, amount, VAT, company, description</li>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:489

  • Text: 'Each expense is saved as a position in this Trustee instance'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Each expense is saved as a position in this Trustee instance</li>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:490

  • Text: 'Processed PDFs are moved to a "processed" subfolder'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Processed PDFs are moved to a "processed" subfolder</li>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:491

  • Text: 'Failed PDFs are moved to an "error" subfolder'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Failed PDFs are moved to an "error" subfolder</li>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:492

  • Text: 'Maximum 50 PDFs are processed per run'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <li>Maximum 50 PDFs are processed per run</li>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:513

  • Text: 'Current Status:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>Current Status:</strong> {existingWorkflow.active ? '✓ Active' : '○ Inactive'}

src/pages/views/trustee/TrusteeExpenseImportView.tsx:513

  • Text: '✓ Active'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <strong>Current Status:</strong> {existingWorkflow.active ? '✓ Active' : '○ Inactive'}

src/pages/views/trustee/TrusteeExpenseImportView.tsx:513

  • Text: '○ Inactive'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <strong>Current Status:</strong> {existingWorkflow.active ? '✓ Active' : '○ Inactive'}

src/pages/views/trustee/TrusteeExpenseImportView.tsx:515

  • Text: 'Folder: {existingWorkflow.sharepointFolder}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <><br />Folder: {existingWorkflow.sharepointFolder}</>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:524

  • Text: 'Microsoft Connection'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>Microsoft Connection</h4>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:531

  • Text: 'Connect Microsoft Account'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isConnecting ? 'Connecting...' : 'Connect Microsoft Account'}

src/pages/views/trustee/TrusteeExpenseImportView.tsx:537

  • Text: 'Microsoft Account'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: Connected as <strong>{msftConnections[0].accountName || 'Microsoft Account'}</strong>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:554

  • Text: 'Select a Microsoft account...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">Select a Microsoft account...</option>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:567

  • Text: 'Add another account'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isConnecting ? 'Connecting...' : 'Add another account'}

src/pages/views/trustee/TrusteeExpenseImportView.tsx:579

  • Text: 'SharePoint Site'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>SharePoint Site</h4>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:581

  • Text: 'Loading sites...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingText}>Loading sites...</div>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:588

  • Text: 'Select a site...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <option value="">Select a site...</option>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:605

  • Text: 'Expense Folder'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h4>Expense Folder</h4>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:610

  • Text: 'Loading folders...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loadingText}>Loading folders...</div>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:651

  • Text: 'No subfolders found'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.emptyText}>No subfolders found</div>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:670

  • Text: 'Update Configuration'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <h4>{existingWorkflow ? 'Update Configuration' : 'Activate Daily Import'}</h4>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:670

  • Text: 'Activate Daily Import'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: <h4>{existingWorkflow ? 'Update Configuration' : 'Activate Daily Import'}</h4>

src/pages/views/trustee/TrusteeExpenseImportView.tsx:681

  • Text: 'Save & Activate'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isActivating ? 'Saving...' : (existingWorkflow ? 'Save & Activate' : 'Activate Daily Import')}

src/pages/views/trustee/TrusteeExpenseImportView.tsx:681

  • Text: 'Activate Daily Import'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isActivating ? 'Saving...' : (existingWorkflow ? 'Save & Activate' : 'Activate Daily Import')}

src/pages/views/trustee/TrusteeExpenseImportView.tsx:688

  • Text: 'Jetzt ausführen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isRunningNow ? 'Starting...' : 'Jetzt ausführen'}

src/pages/views/trustee/TrusteeInstanceRolesView.tsx:56

  • Text: 'Fehler beim Laden der Rollen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMsg = err.response?.data?.detail || err.message || 'Fehler beim Laden der Rollen';

src/pages/views/trustee/TrusteeInstanceRolesView.tsx:76

  • Text: 'Keine Feature-Instanz ausgewählt'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.error}>Keine Feature-Instanz ausgewählt</div>

src/pages/views/trustee/TrusteeInstanceRolesView.tsx:84

  • Text: 'Lade Instanz-Rollen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <div className={styles.loading}>Lade Instanz-Rollen...</div>

src/pages/views/trustee/TrusteeInstanceRolesView.tsx:132

  • Text: 'Keine Instanz-Rollen gefunden'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>Keine Instanz-Rollen gefunden</p>

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:139

  • Text: 'Fehler beim Laden der Verknüpfungen: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Verknüpfungen: {error}</p>

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:152

  • Text: 'Belege mit Buchungspositionen verknüpfen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Belege mit Buchungspositionen verknüpfen</p>

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:188

  • Text: 'Verknüpfung bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Verknüpfung bearbeiten',

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:194

  • Text: 'Verknüpfung entfernen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Verknüpfung entfernen',

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:206

  • Text: 'Keine Verknüpfungen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Verknüpfungen gefunden"

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:215

  • Text: 'Neue Verknüpfung erstellen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Neue Verknüpfung erstellen</h2>

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:227

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:236

  • Text: 'Verknüpfung erstellen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: submitButtonText="Verknüpfung erstellen"

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:251

  • Text: 'Verknüpfung bearbeiten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.modalTitle}>Verknüpfung bearbeiten</h2>

src/pages/views/trustee/TrusteePositionDocumentsView.tsx:263

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/views/trustee/TrusteePositionsView.tsx:91

  • Text: 'Sync teilweise fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Sync teilweise fehlgeschlagen',${res.success} OK, ${res.errors} Fehler.);

src/pages/views/trustee/TrusteePositionsView.tsx:94

  • Text: 'Sync fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Sync fehlgeschlagen', firstError?.errorMessage ||${res.errors} Fehler.);

src/pages/views/trustee/TrusteePositionsView.tsx:99

  • Text: 'Sync fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Sync fehlgeschlagen', err.response?.data?.detail || err.message || 'Unbekannter Fehler.');

src/pages/views/trustee/TrusteePositionsView.tsx:99

  • Text: 'Unbekannter Fehler.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Sync fehlgeschlagen', err.response?.data?.detail || err.message || 'Unbekannter Fehler.');

src/pages/views/trustee/TrusteePositionsView.tsx:127

  • Text: 'Dokument nicht gefunden.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'Dokument nicht gefunden.');

src/pages/views/trustee/TrusteePositionsView.tsx:145

  • Text: 'Fehler beim Herunterladen des Dokuments.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Fehler', 'Fehler beim Herunterladen des Dokuments.');

src/pages/views/trustee/TrusteePositionsView.tsx:163

  • Text: 'Belege'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Belege',

src/pages/views/trustee/TrusteePositionsView.tsx:190

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e5e7eb)',

src/pages/views/trustee/TrusteePositionsView.tsx:228

  • Text: 'Sync-Status'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Sync-Status',

src/pages/views/trustee/TrusteePositionsView.tsx:393

  • Text: 'Fehler beim Laden der Positionen: {error}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.errorMessage}>Fehler beim Laden der Positionen: {error}</p>

src/pages/views/trustee/TrusteePositionsView.tsx:406

  • Text: 'Buchungspositionen verwalten'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.pageSubtitle}>Buchungspositionen verwalten</p>

src/pages/views/trustee/TrusteePositionsView.tsx:441

  • Text: 'Buchhaltung synchronisieren'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: label: 'Buchhaltung synchronisieren',

src/pages/views/trustee/TrusteePositionsView.tsx:455

  • Text: 'Löschen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'Löschen',

src/pages/views/trustee/TrusteePositionsView.tsx:463

  • Text: 'In Buchhaltung synchronisieren'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title: 'In Buchhaltung synchronisieren',

src/pages/views/trustee/TrusteePositionsView.tsx:477

  • Text: 'Keine Positionen gefunden'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: emptyMessage="Keine Positionen gefunden"

src/pages/views/trustee/TrusteePositionsView.tsx:487

  • Text: 'Neue Position'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isCreateMode ? 'Neue Position' : 'Position bearbeiten'}

src/pages/views/trustee/TrusteePositionsView.tsx:487

  • Text: 'Position bearbeiten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {isCreateMode ? 'Neue Position' : 'Position bearbeiten'}

src/pages/views/trustee/TrusteePositionsView.tsx:500

  • Text: 'Lade Formular...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Lade Formular...</span>

src/pages/views/trustee/TrusteeScanUploadView.tsx:77

  • Text: 'Invalid file'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Invalid file',${file.name}: only PDF and JPG are supported.);

src/pages/views/trustee/TrusteeScanUploadView.tsx:85

  • Text: 'Upload'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: else showError('Upload', 'Could not get file ID from server.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:85

  • Text: 'Could not get file ID from server.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: else showError('Upload', 'Could not get file ID from server.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:87

  • Text: 'Upload failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Upload failed', result.error || 'Unknown error');

src/pages/views/trustee/TrusteeScanUploadView.tsx:87

  • Text: 'Unknown error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Upload failed', result.error || 'Unknown error');

src/pages/views/trustee/TrusteeScanUploadView.tsx:157

  • Text: 'Step failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errMsg = failedStep.error || 'Step failed';

src/pages/views/trustee/TrusteeScanUploadView.tsx:161

  • Text: 'Pipeline error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Pipeline error', errMsg);

src/pages/views/trustee/TrusteeScanUploadView.tsx:168

  • Text: 'Pipeline completed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Pipeline completed', 'Extraction and processing workflow finished successfully.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:168

  • Text: 'Extraction and processing workflow finished successfully.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Pipeline completed', 'Extraction and processing workflow finished successfully.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:178

  • Text: 'Polling failed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const msg = _parseErrorDetail(pollErr.response?.data?.detail) || pollErr.message || 'Polling failed';

src/pages/views/trustee/TrusteeScanUploadView.tsx:182

  • Text: 'Polling error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Polling error', msg);

src/pages/views/trustee/TrusteeScanUploadView.tsx:213

  • Text: 'Missing data'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing data', 'Please upload at least one PDF or JPG first.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:213

  • Text: 'Please upload at least one PDF or JPG first.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Missing data', 'Please upload at least one PDF or JPG first.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:219

  • Text: 'Starting pipeline workflow...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setPipelineSummary('Starting pipeline workflow...');

src/pages/views/trustee/TrusteeScanUploadView.tsx:233

  • Text: 'Pipeline completed (synchronous execution).'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setPipelineSummary('Pipeline completed (synchronous execution).');

src/pages/views/trustee/TrusteeScanUploadView.tsx:234

  • Text: 'Pipeline finished: Extract → Process → Sync.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Completed', 'Pipeline finished: Extract → Process → Sync.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:236

  • Text: 'Workflow executed but no run ID returned.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error(response?.data?.error || 'Workflow executed but no run ID returned.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:242

  • Text: 'Pipeline started: Extract → Process → Sync. You can follow progress in Workflows.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showSuccess('Started', 'Pipeline started: Extract → Process → Sync. You can follow progress in Workflows.');

src/pages/views/trustee/TrusteeScanUploadView.tsx:245

  • Text: 'Failed to start workflow'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const msg = _parseErrorDetail(err.response?.data?.detail) || err.message || 'Failed to start workflow';

src/pages/views/trustee/TrusteeScanUploadView.tsx:248

  • Text: 'Error'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: showError('Error', msg);

src/pages/views/trustee/TrusteeScanUploadView.tsx:257

  • Text: 'File upload is not available in this context.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p>File upload is not available in this context.</p>

src/pages/views/trustee/TrusteeScanUploadView.tsx:265

  • Text: 'Scan / Upload'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.sectionTitle}>Scan / Upload</h3>

src/pages/views/trustee/TrusteeScanUploadView.tsx:272

  • Text: 'Pipeline status:'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <strong>Pipeline status:</strong> {pipelineState}

src/pages/views/trustee/TrusteeScanUploadView.tsx:308

  • Text: 'Choose files'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Choose files"

src/pages/views/trustee/TrusteeScanUploadView.tsx:310

  • Text: 'Choose files'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {uploadingFile ? 'Uploading…' : 'Choose files'}

src/pages/views/trustee/TrusteeScanUploadView.tsx:320

  • Text: 'Take photo'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: aria-label="Take photo"

src/pages/views/trustee/TrusteeScanUploadView.tsx:341

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/trustee/TrusteeScanUploadView.tsx:364

  • Text: 'Pipeline running...'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Pipeline running...'

src/pages/views/trustee/TrusteeScanUploadView.tsx:365

  • Text: 'Start pipeline'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Start pipeline'}

src/pages/views/workspace/ChatStream.tsx:63

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/ChatStream.tsx:108

  • Text: '2px solid #ddd'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '2px solid #ddd',

src/pages/views/workspace/ChatStream.tsx:120

  • Text: '1px solid #eee'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid #eee',

src/pages/views/workspace/ChatStream.tsx:201

  • Text: '1px solid var(--warning-color, #ff9800)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--warning-color, #ff9800)',

src/pages/views/workspace/ChatStream.tsx:246

  • Text: '1px solid var(--border-color, #ccc)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ccc)',

src/pages/views/workspace/ChatStream.tsx:262

  • Text: '1px solid var(--progress-border, #c8e6c9)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--progress-border, #c8e6c9)',

src/pages/views/workspace/ChatStream.tsx:354

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/ChatStream.tsx:357

  • Text: 'background 0.15s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.15s',

src/pages/views/workspace/ChatStream.tsx:376

  • Text: 'Download'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <span style={{ fontSize: 14, color: 'var(--primary-color, #F25843)' }} title="Download">&#x2B07;</span>

src/pages/views/workspace/ChatStream.tsx:451

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/ChatStream.tsx:478

  • Text: 'width 0.2s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'width 0.2s',

src/pages/views/workspace/ChatStream.tsx:500

  • Text: 'Stop'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Stop"

src/pages/views/workspace/ChatStream.tsx:530

  • Text: 'Consolas, Monaco, "Courier New", monospace'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fontFamily: 'Consolas, Monaco, "Courier New", monospace',

src/pages/views/workspace/ChatStream.tsx:557

  • Text: 'Consolas, Monaco, "Courier New", monospace'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fontFamily: 'Consolas, Monaco, "Courier New", monospace',

src/pages/views/workspace/FilePreview.tsx:72

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/FilePreview.tsx:106

  • Text: 'Consolas, Monaco, "Courier New", monospace'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fontFamily: 'Consolas, Monaco, "Courier New", monospace',

src/pages/views/workspace/FilePreview.tsx:135

  • Text: 'File too large for inline preview'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'File too large for inline preview'

src/pages/views/workspace/NeutralizationPanel.tsx:214

  • Text: 'Chat, Prompt & Kontext'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: fileName: 'Chat, Prompt & Kontext',

src/pages/views/workspace/NeutralizationPanel.tsx:366

  • Text: '2px solid var(--accent, #4f46e5)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: selectedSource === src.fileId ? '2px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',

src/pages/views/workspace/NeutralizationPanel.tsx:366

  • Text: '1px solid var(--border-color, #e5e7eb)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: selectedSource === src.fileId ? '2px solid var(--accent, #4f46e5)' : '1px solid var(--border-color, #e5e7eb)',

src/pages/views/workspace/NeutralizationPanel.tsx:394

  • Text: '1px solid var(--border-color, #d1d5db)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #d1d5db)',

src/pages/views/workspace/NeutralizationPanel.tsx:423

  • Text: '1px solid var(--border-color, #f3f4f6)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: '1px solid var(--border-color, #f3f4f6)',

src/pages/views/workspace/NeutralizationPanel.tsx:437

  • Text: 'Mapping löschen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Mapping löschen"

src/pages/views/workspace/NeutralizationPanel.tsx:450

  • Text: 'Keine Mappings ohne Dateizuordnung.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? 'Keine Mappings ohne Dateizuordnung.'

src/pages/views/workspace/NeutralizationPanel.tsx:451

  • Text: 'Keine gespeicherten Mappings für diese Datenquelle.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : 'Keine gespeicherten Mappings für diese Datenquelle.'}

src/pages/views/workspace/WorkspaceEditorPage.tsx:71

  • Text: 'Zurueck zum Dashboard'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button onClick={_goBack} style={_btnStyle} title="Zurueck zum Dashboard">

src/pages/views/workspace/WorkspaceEditorPage.tsx:80

  • Text: 'Aktualisieren'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: <button onClick={editor.refresh} style={_btnStyle} title="Aktualisieren">

src/pages/views/workspace/WorkspaceEditorPage.tsx:106

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspaceEditorPage.tsx:153

  • Text: 'Original: {formatBinaryDataSizeBytes(activeEdit.oldContent.length)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Original: {formatBinaryDataSizeBytes(activeEdit.oldContent.length)}</span>

src/pages/views/workspace/WorkspaceEditorPage.tsx:154

  • Text: 'Geaendert: {formatBinaryDataSizeBytes(activeEdit.newContent.length)}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <span>Geaendert: {formatBinaryDataSizeBytes(activeEdit.newContent.length)}</span>

src/pages/views/workspace/WorkspaceEditorPage.tsx:177

  • Text: 'TextModel got disposed'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: // Safe DiffEditor wrapper -- prevents "TextModel got disposed" errors

src/pages/views/workspace/WorkspaceEditorPage.tsx:239

  • Text: '2px solid var(--primary-color, #F25843)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: isActive ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',

src/pages/views/workspace/WorkspaceEditorPage.tsx:239

  • Text: '2px solid transparent'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: isActive ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:50

  • Text: 'Fehler beim Laden der Einstellungen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err?.message || 'Fehler beim Laden der Einstellungen');

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:67

  • Text: 'Wert muss zwischen 1 und 100 liegen.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError('Wert muss zwischen 1 und 100 liegen.');

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:81

  • Text: 'Einstellungen gespeichert.'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setSuccess('Einstellungen gespeichert.');

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:84

  • Text: 'Fehler beim Speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(err?.message || 'Fehler beim Speichern');

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:95

  • Text: 'Lade Einstellungen...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div className={styles.loading}>Lade Einstellungen...</div>;

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:102

  • Text: 'Generelle Einstellungen'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h2 className={styles.heading}>Generelle Einstellungen</h2>

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:130

  • Text: 'Auf Standard zurücksetzen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Auf Standard zurücksetzen"

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:139

  • Text: 'Ihr Override: {maxRoundsInfo.userOverride}.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <> Ihr Override: {maxRoundsInfo.userOverride}.</>

src/pages/views/workspace/WorkspaceGeneralSettings.tsx:151

  • Text: 'Einstellungen speichern'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: {saving ? 'Speichern...' : 'Einstellungen speichern'}

src/pages/views/workspace/WorkspaceInput.tsx:14

  • Text: 'Deutsch'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'de-DE', label: 'Deutsch' },

src/pages/views/workspace/WorkspaceInput.tsx:15

  • Text: 'English (US)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'en-US', label: 'English (US)' },

src/pages/views/workspace/WorkspaceInput.tsx:16

  • Text: 'English (UK)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'en-GB', label: 'English (UK)' },

src/pages/views/workspace/WorkspaceInput.tsx:17

  • Text: 'Francais'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'fr-FR', label: 'Francais' },

src/pages/views/workspace/WorkspaceInput.tsx:18

  • Text: 'Italiano'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'it-IT', label: 'Italiano' },

src/pages/views/workspace/WorkspaceInput.tsx:19

  • Text: 'Espanol'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'es-ES', label: 'Espanol' },

src/pages/views/workspace/WorkspaceInput.tsx:20

  • Text: 'Portugues'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'pt-BR', label: 'Portugues' },

src/pages/views/workspace/WorkspaceInput.tsx:21

  • Text: 'Nederlands'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'nl-NL', label: 'Nederlands' },

src/pages/views/workspace/WorkspaceInput.tsx:22

  • Text: 'Polski'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'pl-PL', label: 'Polski' },

src/pages/views/workspace/WorkspaceInput.tsx:23

  • Text: 'Russkij'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'ru-RU', label: 'Russkij' },

src/pages/views/workspace/WorkspaceInput.tsx:24

  • Text: 'Japanese'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'ja-JP', label: 'Japanese' },

src/pages/views/workspace/WorkspaceInput.tsx:25

  • Text: 'Chinese'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { code: 'zh-CN', label: 'Chinese' },

src/pages/views/workspace/WorkspaceInput.tsx:324

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderTop: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspaceInput.tsx:327

  • Text: '2px dashed var(--primary-color, #F25843)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: outline: treeDropOver ? '2px dashed var(--primary-color, #F25843)' : 'none',

src/pages/views/workspace/WorkspaceInput.tsx:329

  • Text: 'background 0.15s, outline 0.15s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'background 0.15s, outline 0.15s',

src/pages/views/workspace/WorkspaceInput.tsx:342

  • Text: '1px solid var(--border-color, #f0f0f0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color, #f0f0f0)',

src/pages/views/workspace/WorkspaceInput.tsx:381

  • Text: '1px solid var(--border-color, #f0f0f0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color, #f0f0f0)',

src/pages/views/workspace/WorkspaceInput.tsx:471

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspaceInput.tsx:473

  • Text: '0 -2px 8px rgba(0,0,0,0.1)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: boxShadow: '0 -2px 8px rgba(0,0,0,0.1)',

src/pages/views/workspace/WorkspaceInput.tsx:484

  • Text: '1px solid #f0f0f0'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid #f0f0f0',

src/pages/views/workspace/WorkspaceInput.tsx:512

  • Text: 'Type a message... Use @filename to reference files'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: placeholder="Type a message... Use @filename to reference files"

src/pages/views/workspace/WorkspaceInput.tsx:521

  • Text: '1px solid var(--border-color, #ccc)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ccc)',

src/pages/views/workspace/WorkspaceInput.tsx:533

  • Text: 'Datei anhängen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Datei anhängen"

src/pages/views/workspace/WorkspaceInput.tsx:551

  • Text: 'Datenquellen anhängen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Datenquellen anhängen"

src/pages/views/workspace/WorkspaceInput.tsx:600

  • Text: '2px solid #2e7d32'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',

src/pages/views/workspace/WorkspaceInput.tsx:600

  • Text: '2px solid #ccc'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #2e7d32' : '2px solid #ccc',

src/pages/views/workspace/WorkspaceInput.tsx:634

  • Text: '2px solid #7b1fa2'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',

src/pages/views/workspace/WorkspaceInput.tsx:634

  • Text: '2px solid #ccc'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: isSelected ? '2px solid #7b1fa2' : '2px solid #ccc',

src/pages/views/workspace/WorkspaceInput.tsx:669

  • Text: 'Sprache waehlen'
  • Art: string_literal
  • Kontext: jsx/html attribute (title|placeholder|aria-label|alt)
  • Zeile: title="Sprache waehlen"

src/pages/views/workspace/WorkspaceInput.tsx:682

  • Text: 'Aufnahme stoppen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={voiceActive ? 'Aufnahme stoppen' : 'Sprachaufnahme starten'}

src/pages/views/workspace/WorkspaceInput.tsx:682

  • Text: 'Sprachaufnahme starten'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={voiceActive ? 'Aufnahme stoppen' : 'Sprachaufnahme starten'}

src/pages/views/workspace/WorkspaceInput.tsx:724

  • Text: 'Neutralisierung aktiv (klicken zum Deaktivieren)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={neutralizeActive ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}

src/pages/views/workspace/WorkspaceInput.tsx:724

  • Text: 'Neutralisierung aus (klicken zum Aktivieren)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: title={neutralizeActive ? 'Neutralisierung aktiv (klicken zum Deaktivieren)' : 'Neutralisierung aus (klicken zum Aktivieren)'}

src/pages/views/workspace/WorkspaceInput.tsx:731

  • Text: 'all 0.15s'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: transition: 'all 0.15s',

src/pages/views/workspace/WorkspacePage.tsx:223

  • Text: '2px solid var(--primary-color, #F25843)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: active ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',

src/pages/views/workspace/WorkspacePage.tsx:223

  • Text: '2px solid transparent'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: active ? '2px solid var(--primary-color, #F25843)' : '2px solid transparent',

src/pages/views/workspace/WorkspacePage.tsx:310

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderRight: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspacePage.tsx:356

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspacePage.tsx:365

  • Text: '1px solid var(--border-color, #ddd)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ddd)',

src/pages/views/workspace/WorkspacePage.tsx:379

  • Text: '1px solid var(--border-color, #ddd)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ddd)',

src/pages/views/workspace/WorkspacePage.tsx:392

  • Text: '1px solid var(--border-color, #ddd)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: border: '1px solid var(--border-color, #ddd)',

src/pages/views/workspace/WorkspacePage.tsx:465

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderLeft: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspacePage.tsx:498

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderRight: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspacePage.tsx:532

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderLeft: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:28

  • Text: 'Office (Text)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: office_doc: 'Office (Text)',

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:29

  • Text: 'Office (Tabellen)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: office_sheet: 'Office (Tabellen)',

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:30

  • Text: 'Office (Folien)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: office_slides: 'Office (Folien)',

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:87

  • Text: 'Laden fehlgeschlagen'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: setError(e instanceof Error ? e.message : 'Laden fehlgeschlagen');

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:150

  • Text: 'Indexierte Dokumente'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.kpiLabel}>Indexierte Dokumente</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:154

  • Text: 'Indexiertes Datenvolumen (geschätzt)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.kpiLabel}>Indexiertes Datenvolumen (geschätzt)</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:158

  • Text: 'Inhalts-Fragmente (Chunks)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.kpiLabel}>Inhalts-Fragmente (Chunks)</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:164

  • Text: 'Anteil Fragmente mit Embedding'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.kpiLabel}>Anteil Fragmente mit Embedding</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:168

  • Text: 'Beitragende Benutzer (Anzahl)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.kpiLabel}>Beitragende Benutzer (Anzahl)</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:172

  • Text: 'Workflow-Entitäten (Cache)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.kpiLabel}>Workflow-Entitäten (Cache)</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:178

  • Text: 'Neu indexierte Dokumente pro Tag (letzte Wochen)'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.chartTitle}>Neu indexierte Dokumente pro Tag (letzte Wochen)</h3>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:180

  • Text: 'Keine Zeitreihen-Daten für den gewählten Zeitraum.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.meta}>Keine Zeitreihen-Daten für den gewählten Zeitraum.</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:196

  • Text: 'Dokumente nach Format-Kategorie'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.chartTitle}>Dokumente nach Format-Kategorie</h3>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:198

  • Text: 'Keine Daten.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.meta}>Keine Daten.</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:215

  • Text: 'Keine Daten.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.meta}>Keine Daten.</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:241

  • Text: 'Fragmente nach Inhaltstyp'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <h3 className={styles.chartTitle}>Fragmente nach Inhaltstyp</h3>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:243

  • Text: 'Keine Chunk-Daten.'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.meta}>Keine Chunk-Daten.</p>

src/pages/views/workspace/WorkspaceRagInsightsPage.tsx:258

  • Text: 'Stand (UTC): {stats.generatedAtUtc}'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: <p className={styles.meta}>Stand (UTC): {stats.generatedAtUtc}</p>

src/pages/views/workspace/WorkspaceSettingsPage.tsx:5

  • Text: 'Stimme & Sprache'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: * Voice settings are now in user-level settings (/settings -> "Stimme & Sprache").

src/pages/views/workspace/WorkspaceSettingsPage.tsx:16

  • Text: 'Generelle Einstellungen'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'general', label: 'Generelle Einstellungen' },

src/pages/views/workspace/WorkspaceSettingsPage.tsx:17

  • Text: 'Neutralisierung (Workspace)'
  • Art: string_literal
  • Kontext: object property label: (e.g. table column)
  • Zeile: { key: 'neutralization', label: 'Neutralisierung (Workspace)' },

src/pages/views/workspace/WorkspaceSettingsPage.tsx:37

  • Text: '1px solid var(--border-color, #e0e0e0)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: borderBottom: '1px solid var(--border-color, #e0e0e0)',

src/pages/views/workspace/WorkspaceSettingsPage.tsx:49

  • Text: '2px solid var(--primary-color, #F25843)'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: ? '2px solid var(--primary-color, #F25843)'

src/pages/views/workspace/WorkspaceSettingsPage.tsx:50

  • Text: '2px solid transparent'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: : '2px solid transparent',

src/providers/auth/AuthProvider.tsx:89

  • Text: 'Loading authentication...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div>Loading authentication...</div>;

src/providers/auth/ProtectedRoute.tsx:109

  • Text: 'Checking authentication...'
  • Art: jsx_text
  • Kontext: between tags, user-visible text node
  • Zeile: return <div>Checking authentication...</div>;

src/stores/featureStore.tsx:124

  • Text: 'Failed to load features'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: const errorMessage = err instanceof Error ? err.message : 'Failed to load features';

src/stores/featureStore.tsx:264

  • Text: 'useFeatureStore must be used within a FeatureProvider'
  • Art: string_literal
  • Kontext: string literal
  • Zeile: throw new Error('useFeatureStore must be used within a FeatureProvider');