import React, { useMemo, useState } from 'react'; import { Search, Layers, FileText, CheckSquare, Keyboard, Pin, FolderTree, Sparkles, Command, Users, Mic, ShoppingCart, Columns, Tag, Link as LinkIcon, Bell, Lock, ArrowLeft, X, Smartphone, RotateCcw, Heading1, ListTodo, Code, Download, Flame, Check, } from 'lucide-react'; import { AboutModal } from '../../components/AboutModal'; interface HelpViewProps { onBack?: () => void; } type HelpCategory = | 'all' | 'workspace' | 'triage' | 'tasks' | 'lists' | 'collaboration' | 'shortcuts'; interface DocCard { id: string; category: HelpCategory; title: string; subtitle?: string; icon: React.ComponentType<{ className?: string }>; keywords: string[]; content: React.ReactNode; } export const HelpView: React.FC = ({ onBack }) => { const [activeCategory, setActiveCategory] = useState('all'); const [searchQuery, setSearchQuery] = useState(''); const [showAbout, setShowAbout] = useState(false); // Documentation sections & cards data const cards: DocCard[] = useMemo( () => [ // WORKSPACE & OUTLINER { id: 'workspace-architecture', category: 'workspace', title: 'Hierarchischer Outliner & Offline-Sync', subtitle: 'Atomare Speicherung mit kollaborativem Echtzeit-Abgleich', icon: FileText, keywords: [ 'workspace', 'outliner', 'datenbank', 'sqlite', 'offline', 'indexeddb', 'export', 'markdown', 'speichern', ], content: (

In MindSift ist jede Notiz ein strukturierter, hierarchischer Outliner. Deine Notizen werden sicher und versioniert in der SQLite-Datenbank abgelegt und im Browser per IndexedDB zwischengespeichert.

  • Volle Offline-Fähigkeit: Du kannst auch ohne Internetverbindung nahtlos weiterarbeiten; Änderungen synchronisieren sich automatisch, sobald du wieder online bist.
  • Markdown-Export: Über das Download-Symbol () im Kopf der Notiz kannst du den aktuellen Stand jederzeit als Standard-Markdown-Datei (.md) auf deinen Rechner exportieren.
), }, { id: 'workspace-keyboard', category: 'workspace', title: 'Tastaturbedienung im Notizen-Editor', subtitle: 'Flüssiges Schreiben und Gliedern ohne die Maus zu berühren', icon: Keyboard, keywords: [ 'tastatur', 'shortcuts', 'enter', 'tab', 'shift', 'backspace', 'outliner', 'einrücken', 'ausrücken', 'undo', 'redo', 'pfeiltasten', ], content: (
  • Enter : Erzeugt sofort einen neuen Bullet-Point auf derselben Ebene. Ist der Punkt leer und eingerückt, rückt er eine Ebene nach links aus.
  • Tab : Rückt den aktuellen Bullet-Point nach rechts ein und ordnet ihn dem vorherigen Punkt unter.
  • Shift + Tab : Rückt den Bullet-Point nach links aus (verringert die Einrückungstiefe).
  • Shift + Enter : Erzeugt einen weichen Zeilenumbruch innerhalb desselben Textblocks.
  • Backspace : Auf einem leeren Block löscht die Taste diesen sofort. Am Textanfang wird der Block mit dem vorherigen zusammengeführt.
  • ↑ / ↓ : Springt flüssig zum vorherigen bzw. nächsten Block, wenn sich der Cursor ganz am Anfang oder Ende des Textes befindet.
  • Strg + Z / Cmd + Z : Mehrstufiges Notiz-Undo. Wiederholen mit Strg + Y bzw. Strg + Shift + Z.
), }, { id: 'workspace-slash-and-autoformat', category: 'workspace', title: 'Slash-Befehle (/) & Auto-Formatierung', subtitle: 'Block-Typen wechseln und Markdown direkt beim Tippen formatieren', icon: Command, keywords: [ 'slash', 'befehle', 'commands', 'todo', 'link', 'h1', 'h2', 'h3', 'code', 'callout', 'divider', 'auto-formatting', ], content: (

Tippe / in einen Block, um das Menü für Blocktypen zu öffnen:

/todo (Checkbox-Aufgabe)
/link (Notiz verknüpfen)
/h1, /h2, /h3 (Überschriften)
/code (Code-Block)
💬 /callout (Hinweis-Box)
— /divider (Trennlinie)
Blitz-Formatierung beim Schreiben:
  • [] oder [ ] am Zeilenanfang wandelt die Zeile sofort in eine Todo-Checkbox um.
  • [x] wandelt sie in eine erledigte Todo-Checkbox um.
  • # , ## oder ### am Zeilenanfang formatiert den Block sofort als Überschrift.
), }, { id: 'workspace-wikilinks-tags', category: 'workspace', title: 'WikiLinks ([[...]]), Hashtags (#) & Tag-Seiten', subtitle: 'Wissen bidirektional vernetzen und thematisch filtern', icon: Tag, keywords: [ 'wikilinks', 'links', 'vernetzung', 'hashtags', 'tags', 'filter', 'schlagwörter', ], content: (

Notizen und Gedanken können in MindSift auf vielfältige Weise miteinander verknüpft werden:

  • WikiLinks: Schreibe [[Name der Notiz]], um eine direkte Verknüpfung zu einer anderen Notiz herzustellen. Ein Klick darauf öffnet die Zielnotiz unmittelbar.
  • Hashtags: Tippe #Projekt oder #Wichtig an beliebiger Stelle in den Text. Hashtags werden farbig hervorgehoben und indiziert.
  • Ansicht „Tags & Filter“: Im oberen Workspace-Reiter findest du die Tag-Übersicht. Hier siehst du alle verwendeten Hashtags, kannst Fundstellen aus allen Dokumenten gebündelt durchsuchen und sogar eigene freie Notizen auf Tag-Seiten hinterlegen.
), }, { id: 'workspace-zoom-drag', category: 'workspace', title: 'Zoom-Hoisting, Drag & Drop und Favoriten', subtitle: 'Fokus behalten und Notizen flexibel sortieren', icon: Pin, keywords: [ 'hoisting', 'zoom', 'drag', 'drop', 'ordner', 'verschieben', 'anpinnen', 'breadcrumbs', ], content: (
  • Zoom-Hoisting: Klicke direkt auf den Bullet-Punkt (•) eines Blocks, um exklusiv in diesen Ast hineinzuzoomen. Die Breadcrumb-Navigation am oberen Rand führt dich jederzeit stufenweise zurück.
  • Blöcke verschieben: Packe einen Bullet-Punkt mit gedrückter Maustaste, um ihn samt aller untergeordneten Punkte an eine neue Stelle zu ziehen.
  • Ordner-Navigation: Notizen im linken Datei-Explorer lassen sich per Drag & Drop bequem in Unterordner einsortieren.
  • Angepinnte Favoriten: Mit dem Stecknadel-Symbol heftest du wichtige Notizen dauerhaft ganz oben im Explorer an.
), }, { id: 'workspace-collab-locks', category: 'workspace', title: 'Echtzeit-Zusammenarbeit, Sperren & Konflikte', subtitle: 'Gemeinsames Arbeiten ohne versehentliches Überschreiben', icon: Lock, keywords: [ 'kollaboration', 'sperren', 'schloss', 'konflikte', 'live', 'presence', 'sharing', ], content: (

MindSift unterstützt kooperatives Arbeiten an Dokumenten mit integriertem Schutz vor Datenverlust:

  • Block-Sperren: Bearbeitet jemand einen Bullet-Point, wird dieser mit einem Schloss-Symbol und dem Benutzernamen gekennzeichnet. Andere Nutzer können diesen Punkt temporär nicht überschreiben.
  • Konfliktkopien: Sollten Änderungen zeitgleich oder offline entstehen, überschreibt der Server niemals still deine Eingaben. Stattdessen erscheint ein gelb hervorgehobener Konfliktblock mit zwei Schaltflächen: „Übernehmen“ oder „Verwerfen“.
  • Verbindungsanzeige: Neben dem Notiztitel siehst du immer den Verbindungsmodus (z.B. Live, Long-Polling oder Offline).
), }, { id: 'workspace-global-todos', category: 'workspace', title: 'Globale To-Dos Rollup & Aufgaben-Verknüpfung', subtitle: 'Alle offenen Aufgaben aus sämtlichen Notizen an einem Ort', icon: CheckSquare, keywords: [ 'rollup', 'todos', 'checkboxen', 'enhanced task', 'global', 'aufgaben', ], content: (

Im Workspace-Tab „Globale To-Dos“ werden automatisch sämtliche unerledigten Checkboxen (- [ ]) aus allen deinen Notizen gesammelt.

  • Zweiseitige Synchronisation: Hakst du eine Aufgabe in der globalen To-Do-Liste ab, wird der Block in der Quell-Notiz in Echtzeit aktualisiert.
  • Verknüpfte Aufgaben (Enhanced Tasks): Ausgewählte Notiz-Aufgaben können zusätzlich als vollwertige Aufgaben im Aufgaben- und Kanban-Bereich geführt werden.
), }, { id: 'workspace-search-cmdk', category: 'workspace', title: 'Globale Suche & Command Palette (Cmd+K)', subtitle: 'FTS5-Volltextsuche in Notizen, Blöcken, Aufgaben und Listen', icon: Command, keywords: [ 'suche', 'search', 'command', 'palette', 'cmdk', 'find', 'fts', 'volltext', 'tastatur', ], content: (

Drücke Cmd + K / Strg + K oder / (wenn kein Textfeld aktiv ist), um die globale Suche zu öffnen:

  • Volltextsuche (FTS5): Durchsucht Notiz-Titel und Blöcke, Aufgaben und Listeneinträge blitzschnell mit Relevanz-Ranking (BM25) und Präfixsuche.
  • Sicherheit: Zeigt nur Inhalte, auf die du tatsächlich Zugriff hast (eigene sowie freigegebene Notizen, Aufgabenlisten und Listen).
  • Tastaturnavigation: Mit ↑ und ↓ blättern, mit Enter Treffer direkt öffnen (Notizen direkt am gefundenen Block).
), }, // TRIAGE & QUICK DUMP { id: 'triage-capture', category: 'triage', title: 'Blitz-Erfassung (Instant Capture Bar)', subtitle: 'Gedanken in unter 1 Sekunde festhalten – per Tastatur oder Sprache', icon: Layers, keywords: [ 'capture', 'schnellerfassung', 'diktat', 'sprache', 'mikrofon', 'inbox', 'posteingang', 'c', ], content: (

Die Schnellerfassungsleiste am oberen Bildschirmrand sorgt dafür, dass kein flüchtiger Gedanke verloren geht:

  • Sofortiger Fokus: Drücke irgendwo in der App C oder / (sofern du nicht bereits in einem Textfeld tippst).
  • Sprach-Diktat: Klicke auf das Mikrofon-Symbol () für kontinuierliche Spracheingabe über die Web Speech API. Gesprochene Gedanken werden automatisch mit dem Tag #diktat versehen.
  • Ziel-Auswahl: Gedanken landen standardmäßig im Posteingang. Über die Optionen kannst du sie jedoch sofort als Aufgabe (mit Priorität und Fälligkeit), Listeneintrag (z.B. auf die Einkaufsliste) oder neue Notiz routen.
), }, { id: 'triage-deck-decisions', category: 'triage', title: 'Triage-Deck: Entscheiden mit 1 Taste oder Wischgeste', subtitle: 'Posteingang in Rekordzeit abarbeiten und den Kopf frei halten', icon: Sparkles, keywords: [ 'triage', 'deck', 'h', 'l', 't', 'd', 'leertaste', 'swipe', 'wischen', 'papierkorb', 'gesten', ], content: (

Im Triage-Deck wird jeder gesammelte Gedanke Karte für Karte vorgelegt. Du entscheidest blitzschnell:

Tastatur (Desktop):
  • H oder ← : Wegwerfen (Papierkorb)
  • L oder → : Als Aufgabe anlegen
  • T : Mit Fälligkeit / Termin
  • D : In Workspace-Notiz wandeln
  • Leertaste : Später (ans Stapelende)
Wischgesten (Touch & Mobile):
  • Nach links wischen: Wegwerfen
  • Nach rechts wischen: Als Aufgabe übernehmen
  • Gedrückt halten: Menü öffnen (Termin, Liste, Notiz)
), }, { id: 'triage-webhooks', category: 'triage', title: 'Externe Erfassung per Webhooks & API', subtitle: 'Gedanken von Siri, Home Assistant, n8n oder curl einspeisen', icon: Bell, keywords: [ 'webhooks', 'api', 'token', 'home assistant', 'siri', 'shortcuts', 'automation', 'curl', ], content: (

Unter Benutzereinstellungen → Webhooks & API kannst du persönliche API-Schlüssel generieren.

Über den Endpunkt POST /api/v1/webhooks/ingest kannst du Gedanken aus iOS-Kurzbefehlen, Smart-Home-Systemen oder Drittanwendungen einspeisen. Sie werden automatisch mit dem Tag #webhook markiert.

), }, // TASKS & KANBAN { id: 'tasks-kanban', category: 'tasks', title: 'Listenansicht & Flexibles Kanban-Board', subtitle: 'Aufgaben visualisieren und mit anpassbaren Spalten steuern', icon: Columns, keywords: [ 'aufgaben', 'tasks', 'kanban', 'board', 'spalten', 'drag', 'drop', 'listen', ], content: (

Aufgaben können flexibel in einer klassischen Listenansicht oder im interaktiven Kanban-Board verwaltet werden:

  • Ansicht umschalten: Nutze den Umschalter oben rechts zwischen Liste und Kanban.
  • Eigene Kanban-Spalten: Über die Spaltenverwaltung kannst du für jede Aufgabenliste individuelle Phasen definieren (z.B. Backlog, In Bearbeitung, Review, Erledigt) inklusive Farben und Erledigt-Status.
  • Drag & Drop: Ziehe Aufgabenkarten mühelos zwischen den Spalten umher. Das Verschieben in eine Erledigt-Spalte hakt die Aufgabe automatisch ab.
), }, { id: 'tasks-details-alarms', category: 'tasks', title: 'Teilaufgaben, Fälligkeiten & Automatische Alarme', subtitle: 'Checklisten mit Fortschrittsbalken, Markdown-Notizen und Benachrichtigungen', icon: CheckSquare, keywords: [ 'subtasks', 'unteraufgaben', 'alarme', 'benachrichtigungen', 'mail', 'discord', 'termin', 'fälligkeit', 'priorität', 'zuweisen', 'zugewiesen', ], content: (
  • Teilaufgaben (Subtasks): Erstelle innerhalb jeder Aufgabe eine Checkliste mit sichtbarem Fortschrittsbalken (z.B. „3 von 5 erledigt“).
  • Prioritäten & Notizen: Vergib Prioritäten (Dringend, Wichtig, Normal) und hinterlege detaillierte Markdown-Notizen.
  • Zuweisen: In geteilten Aufgabenlisten weist du eine Aufgabe einer oder mehreren Personen mit Zugriff zu (Namen tippen, Enter). Die Zugewiesenen erscheinen als kleine Profilbilder an der Aufgabe; wer den Zugriff auf die Liste verliert, wird automatisch entfernt.
  • Automatische Alarme: Ist ein Fälligkeitsdatum erreicht, kann MindSift dich automatisch per E-Mail, Discord-Webhook oder individuellem HTTP-Webhook benachrichtigen. Konfigurierbar in deinen Benutzereinstellungen.
), }, // LISTS & SHOPPING { id: 'lists-shared-shopping', category: 'lists', title: 'Geteilte Listen, Mengenangaben & Hashtag-Kategorien', subtitle: 'Echtzeit-Einkaufslisten, Packlisten und Checklisten', icon: ShoppingCart, keywords: [ 'listen', 'einkauf', 'shopping', 'checkliste', 'mengen', 'kategorien', 'hashtag', 'realtime', ], content: (

Geteilte Listen eignen sich perfekt für Einkäufe, Packlisten und gemeinsame Besorgungen:

  • Automatische Mengenerkennung: Eingaben wie 2x Bio-Milch oder 500g Pasta trennen Menge und Bezeichnung automatisch.
  • Kategorisierung per Hashtag: Ergänze einen Hashtag wie #Kühlregal oder #Gemüse. Die Liste gruppiert die Artikel automatisch in entsprechende Abschnitte.
  • Live-Abgleich & Erledigte aufräumen: Abgehakte Artikel werden in Echtzeit synchronisiert und zeigen an, wer sie erledigt hat. Mit dem Aufräumen-Button entfernst du erledigte Artikel gesammelt.
), }, // APPEARANCE: CUSTOM THEMES { id: 'workspace-custom-themes', category: 'workspace', title: 'Darstellung & eigene Themes', subtitle: 'Fertige Designs wählen oder ein eigenes CSS-Theme hochladen', icon: Sparkles, keywords: ['theme', 'design', 'farben', 'css', 'dunkel', 'hell', 'darstellung'], content: (
  • Theme wechseln: Im Profilmenü oben rechts oder unter Kontoeinstellungen → Darstellung & Themes.
  • Eigenes Theme: Vorlage herunterladen oder einfügen, Farben und Rundungen anpassen, als .css-Datei hochladen oder einfügen und „Speichern & aktivieren“. Das Theme greift sofort und steht dir auf allen Geräten zur Verfügung.
), }, // COLLABORATION: ORGANIZATIONS, GROUPS & SHARING { id: 'collab-teams-sharing', category: 'collaboration', title: 'Organisationen, Gruppen & Freigaben', subtitle: 'Wer wen sieht, und Notizen, Ordner und Listen sicher teilen', icon: Users, keywords: [ 'teams', 'gruppen', 'organisation', 'sichtbarkeit', 'privat', 'freigabe', 'sharing', 'berechtigungen', 'bearbeiter', 'leser', 'ordner', ], content: (
  • Wer wen sieht: Das legt der Server-Admin fest. Je nach Einstellung siehst du alle Nutzer, nur die Mitglieder deiner Organisation oder niemanden (Modus „Privat“: kein Teilen, keine Gruppen). Organisationen verwaltet nur der Server-Admin; jeder gehört höchstens einer an.
  • Gruppen: Fasse Personen, die du sehen kannst, zu Gruppen zusammen (z. B. Familie, WG, Projekt) und teile mit allen auf einmal. Wer eine Gruppe anlegt, ist ihr Admin; mit einer Gruppe teilen kann nur, wer selbst Mitglied ist.
  • Nur der Eigentümer teilt: Bearbeiter können Inhalte ändern, aber nicht weiterteilen. Eine Freigabe an dich kannst du jederzeit selbst verlassen. Wechselt jemand die Organisation oder verlässt eine Gruppe, fallen seine Freigaben dort automatisch weg.
  • Rollen (Bearbeiter vs. Leser): Beim Teilen von Notizen, Ordnern oder Listen wählst du zwischen Bearbeiter (Vollzugriff auf Inhalte und Checklisten) und Nur Lesen (reine Ansicht mit Live-Updates).
  • Dezentrale Ordnerablage: Jeder Empfänger kann geteilte Dokumente und Ordner in seine eigene Verzeichnisstruktur einhängen, ohne die Organisation des Eigentümers zu verändern.
), }, ], [] ); // Filtered cards based on active category & search query const filteredCards = useMemo(() => { let result = cards; if (activeCategory !== 'all' && activeCategory !== 'shortcuts') { result = result.filter((card) => card.category === activeCategory); } if (searchQuery.trim()) { const q = searchQuery.toLowerCase().trim(); result = result.filter((card) => { const titleMatch = card.title.toLowerCase().includes(q); const subMatch = card.subtitle?.toLowerCase().includes(q) || false; const kwMatch = card.keywords.some((kw) => kw.toLowerCase().includes(q)); return titleMatch || subMatch || kwMatch; }); } return result; }, [cards, activeCategory, searchQuery]); // Keyboard shortcuts table data const shortcuts = useMemo( () => [ { key: 'Cmd + K / Strg + K oder /', scope: 'Global', desc: 'Globale Volltextsuche (Command Palette) öffnen' }, { key: 'C', scope: 'Global', desc: 'Fokus sofort in die Schnellerfassungsleiste setzen' }, { key: 'Enter', scope: 'Schnellerfassung', desc: 'Gedanken blitzschnell speichern' }, { key: 'Esc', scope: 'Schnellerfassung', desc: 'Eingabe leeren & Optionen schließen' }, { key: 'Enter', scope: 'Workspace Outliner', desc: 'Neuen Bullet-Point anlegen (oder leeren Block ausrücken)' }, { key: 'Tab', scope: 'Workspace Outliner', desc: 'Bullet-Point einrücken (unterordnen)' }, { key: 'Shift + Tab', scope: 'Workspace Outliner', desc: 'Bullet-Point nach links ausrücken' }, { key: 'Shift + Enter', scope: 'Workspace Outliner', desc: 'Weicher Zeilenumbruch innerhalb des Blocks' }, { key: 'Backspace', scope: 'Workspace Outliner', desc: 'Auf leerem Block: Block löschen; Am Anfang: Zusammenführen' }, { key: '↑ / ↓', scope: 'Workspace Outliner', desc: 'Zum vorherigen / nächsten Block navigieren' }, { key: 'Strg + Z / Cmd + Z', scope: 'Workspace Outliner', desc: 'Letzte Notiz-Aktion rückgängig machen' }, { key: 'Strg + Y / Strg + Shift + Z', scope: 'Workspace Outliner', desc: 'Rückgängig gemachte Aktion wiederholen' }, { key: '/', scope: 'Workspace Outliner', desc: 'Slash-Menü öffnen (/todo, /link, /h1, /code, ...)' }, { key: '[] oder [ ] am Anfang', scope: 'Workspace Outliner', desc: 'Sofort in Todo-Checkbox umwandeln' }, { key: '[x] am Anfang', scope: 'Workspace Outliner', desc: 'Sofort in erledigte Todo-Checkbox umwandeln' }, { key: '#, ##, ### am Anfang', scope: 'Workspace Outliner', desc: 'Sofort in H1, H2 oder H3 Überschrift wandeln' }, { key: '[[Notiztitel]]', scope: 'Workspace Outliner', desc: 'Interaktiven WikiLink zu Notiz einbetten' }, { key: '#Tagname', scope: 'Workspace / Listen', desc: 'Inline-Hashtag für globale Vernetzung oder Kategorisierung' }, { key: 'H oder ←', scope: 'Triage-Deck', desc: 'Gedanken verwerfen (in den Papierkorb)' }, { key: 'L oder →', scope: 'Triage-Deck', desc: 'Gedanken sofort zur Aufgabe machen' }, { key: 'T', scope: 'Triage-Deck', desc: 'Aufgabe mit Fälligkeitsdatum / Termin anlegen' }, { key: 'D', scope: 'Triage-Deck', desc: 'Gedanken in Notizdokument umwandeln' }, { key: 'Leertaste', scope: 'Triage-Deck', desc: 'Karte überspringen („Später" – ans Ende des Stapels)' }, { key: 'Swipe links', scope: 'Triage (Touch/Mobile)', desc: 'Gedanken verwerfen' }, { key: 'Swipe rechts', scope: 'Triage (Touch/Mobile)', desc: 'Gedanken als Aufgabe übernehmen' }, { key: 'Gedrückt halten', scope: 'Triage (Touch/Mobile)', desc: 'Aktionsmenü öffnen (Termin, Liste, Notiz)' }, ], [] ); const filteredShortcuts = useMemo(() => { if (!searchQuery.trim()) return shortcuts; const q = searchQuery.toLowerCase().trim(); return shortcuts.filter( (s) => s.key.toLowerCase().includes(q) || s.scope.toLowerCase().includes(q) || s.desc.toLowerCase().includes(q) ); }, [shortcuts, searchQuery]); return (
{/* Header Bar */}
{onBack && ( )}

Hilfe & Dokumentation

Tastaturbedienung, Outliner-Notizen, Triage, Kanban-Board und Zusammenarbeit

{/* Search Input */}
setSearchQuery(e.target.value)} placeholder="In Hilfe & Kürzeln suchen…" className="w-full h-8 pl-8 pr-8 input-field text-xs bg-canvas" /> {searchQuery && ( )}
{/* Category Filter Pills */}
{[ { id: 'all', label: 'Alle Themen', icon: Sparkles }, { id: 'workspace', label: 'Workspace & Notizen', icon: FileText }, { id: 'triage', label: 'Schnellerfassung & Triage', icon: Layers }, { id: 'tasks', label: 'Aufgaben & Kanban', icon: CheckSquare }, { id: 'lists', label: 'Geteilte Listen', icon: ShoppingCart }, { id: 'collaboration', label: 'Gruppen & Freigaben', icon: Users }, { id: 'shortcuts', label: 'Tastatur-Kürzel & Gesten', icon: Keyboard }, ].map((cat) => { const Icon = cat.icon; const isActive = activeCategory === cat.id; return ( ); })}
{/* Active Search Status Banner */} {searchQuery && (
Suchergebnisse für „{searchQuery}“: {filteredCards.length} Hilfekarten {activeCategory === 'all' || activeCategory === 'shortcuts' ? `, ${filteredShortcuts.length} Tastenkürzel` : ''}
)} {/* Grid of Documentation Cards */} {activeCategory !== 'shortcuts' && (
{filteredCards.length > 0 ? (
{filteredCards.map((card) => { const Icon = card.icon; return (

{card.title}

{card.subtitle && (

{card.subtitle}

)}
{card.content}
); })}
) : (

Keine passenden Hilfethemen gefunden

Versuche einen anderen Suchbegriff oder wechsle zur Kategorie „Alle Themen“.

)}
)} {/* SHORTCUTS CHEAT SHEET */} {(activeCategory === 'all' || activeCategory === 'shortcuts') && (

Tastatur-Kürzel & Gesten Gesamtübersicht

Schneller arbeiten ohne Maus: Alle Hotkeys und Mobile-Gesten auf einen Blick.

{filteredShortcuts.map((sc, i) => ( ))}
Taste / Geste Bereich Funktion
{sc.key} {sc.scope} {sc.desc}
)}
{showAbout && setShowAbout(false)} />}
); };