Suche: Kalenderdatum leserlich, Keywords fuer alle Dev-Tools, gbit/s und mehr

This commit is contained in:
2026-06-05 18:08:56 +02:00
parent 49992490df
commit 5b71c90831

View File

@@ -1430,6 +1430,16 @@ function ChangelogModal({ user, toast, onClose, onRead }) {
</div>
);
}
function formatIcalDate(dt) {
if (!dt) return '';
const clean = dt.replace('Z','');
const date = clean.slice(0,8);
if (date.length < 8) return dt;
const d = date.slice(6,8), m = date.slice(4,6), y = date.slice(0,4);
const tm = clean.match(/T(\d{2})(\d{2})/);
return tm ? `${d}.${m}.${y}, ${tm[1]}:${tm[2]} Uhr` : `${d}.${m}.${y}`;
}
function SearchResultItem({ item, idx, activeIdx, onNavigate, onHover }) {
const isActive = idx === activeIdx;
let icon = '❓', primary = '', secondary = '';
@@ -1453,7 +1463,7 @@ function SearchResultItem({ item, idx, activeIdx, onNavigate, onHover }) {
if (item.type==='file_folder') { icon='📁'; primary=item.name; secondary='Datei-Ordner'; }
if (item.type==='push') { icon='🔔'; primary=item.message; secondary=`Push · ${(item.scheduled_at||'').slice(0,16)}`; }
if (item.type==='calendar_feed') { icon='📅'; primary=item.name; secondary='Kalender-Abo'; }
if (item.type==='calendar_event') { icon='📆'; primary=item.summary; secondary=`${item.feed_name||'Kalender'}${item.start_dt?' · '+item.start_dt.slice(0,10):''}`; }
if (item.type==='calendar_event') { icon='📆'; primary=item.summary; secondary=`${item.feed_name||'Kalender'}${item.start_dt?' · '+formatIcalDate(item.start_dt):''}`; }
if (item.type==='qr') { icon='◻'; primary=item.label||item.url; secondary=`QR-Code · ${item.url}`; }
return (
<div onClick={()=>onNavigate(item)} onMouseEnter={()=>onHover(idx)}
@@ -1474,142 +1484,91 @@ function SearchResultItem({ item, idx, activeIdx, onNavigate, onHover }) {
}
// ── Globale Suche ─────────────────────────────────────────────────────────────
// Statischer Such-Index wirklich vollständig
// Statischer Such-Index mit Keywords für umfassende Suche
const SEARCH_TOOL_INDEX = [
// ── Haupt-Tools ──────────────────────────────────────────────────────────
{type:'tool',label:'Dashboard',icon:'🏠',sub:'',id:'dashboard'},
{type:'tool',label:'Bestellungen',icon:'📦',sub:'3D-Druck',id:'bestellungen'},
{type:'tool',label:'Kalkulator3D',icon:'🖨',sub:'3D-Druck',id:'kalkulator3d'},
{type:'tool',label:'3D-Archiv',icon:'🖨',sub:'3D-Druck',id:'kalkulator3d'},
{type:'tool',label:'Dateien',icon:'📁',sub:'Werkzeuge',id:'dateien'},
{type:'tool',label:'Datei-Manager',icon:'📁',sub:'Werkzeuge',id:'dateien'},
{type:'tool',label:'Nachrichten',icon:'💬',sub:'Werkzeuge',id:'nachrichten'},
{type:'tool',label:'Chat',icon:'💬',sub:'Werkzeuge',id:'nachrichten'},
{type:'tool',label:'Linkliste',icon:'🔗',sub:'Werkzeuge',id:'linkliste'},
{type:'tool',label:'Code-Schnipsel',icon:'📄',sub:'Werkzeuge',id:'codeschnipsel'},
{type:'tool',label:'Snippets',icon:'📄',sub:'Werkzeuge',id:'codeschnipsel'},
{type:'tool',label:'CAD-Skizzen',icon:'📐',sub:'Werkzeuge',id:'skizze'},
{type:'tool',label:'Sketchpad',icon:'📐',sub:'Werkzeuge',id:'skizze'},
{type:'tool',label:'Dev-Tools',icon:'🔧',sub:'Werkzeuge',id:'devtools'},
// ── Dashboard-Widgets ────────────────────────────────────────────────────
{type:'tool',label:'Schnellzugriff',icon:'',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'Kalender',icon:'📅',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'iCal',icon:'📅',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'ToDo',icon:'✅',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'Notizen',icon:'📝',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'Push-Erinnerungen',icon:'🔔',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'Roadmap',icon:'🗺',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'Wünsche',icon:'',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'Board',icon:'📋',sub:'Dashboard',id:'dashboard'},
{type:'tool',label:'Changelog',icon:'📋',sub:'Dashboard',id:'dashboard'},
// ── Einstellungen Profil ────────────────────────────────────────────────
{type:'settings',label:'Profil',icon:'👤',sub:'Einstellungen',section:'profil'},
{type:'settings',label:'Avatar',icon:'🖼',sub:'Einstellungen → Profil',section:'profil'},
{type:'settings',label:'Passwort ändern',icon:'🔑',sub:'Einstellungen → Profil',section:'profil'},
{type:'settings',label:'Benutzername ändern',icon:'✏️',sub:'Einstellungen → Profil',section:'profil'},
{type:'settings',label:'Pushover',icon:'🔔',sub:'Einstellungen → Profil',section:'profil'},
{type:'settings',label:'Push-Benachrichtigungen',icon:'🔔',sub:'Einstellungen → Profil',section:'profil'},
{type:'settings',label:'Account löschen',icon:'⚠️',sub:'Einstellungen → Profil',section:'profil'},
// ── Einstellungen Sicherheit ────────────────────────────────────────────
{type:'settings',label:'Sicherheit',icon:'🔒',sub:'Einstellungen',section:'sicherheit'},
{type:'settings',label:'Login-Schutz',icon:'🔒',sub:'Einstellungen → Sicherheit',section:'sicherheit'},
{type:'settings',label:'Account sperren',icon:'🔒',sub:'Einstellungen → Sicherheit',section:'sicherheit'},
{type:'settings',label:'Login-Versuche',icon:'🔒',sub:'Einstellungen → Sicherheit',section:'sicherheit'},
// ── Einstellungen Dashboard ─────────────────────────────────────────────
{type:'settings',label:'Dashboard-Einstellungen',icon:'🏠',sub:'Einstellungen',section:'dashboard'},
{type:'settings',label:'Schnellzugriff verwalten',icon:'⚡',sub:'Einstellungen → Dashboard',section:'dashboard'},
{type:'settings',label:'Kalender hinzufügen',icon:'📅',sub:'Einstellungen → Dashboard',section:'dashboard'},
{type:'settings',label:'iCal Abo',icon:'📅',sub:'Einstellungen → Dashboard',section:'dashboard'},
// ── Einstellungen Admin ─────────────────────────────────────────────────
{type:'settings',label:'Benutzer verwalten',icon:'👥',sub:'Einstellungen (Admin)',section:'benutzer'},
{type:'settings',label:'Neuen Benutzer anlegen',icon:'',sub:'Einstellungen (Admin)',section:'benutzer'},
{type:'settings',label:'Datei-Manager Limits',icon:'📁',sub:'Einstellungen (Admin)',section:'benutzer'},
{type:'settings',label:'Gesperrte Konten',icon:'🔒',sub:'Einstellungen (Admin)',section:'benutzer'},
{type:'settings',label:'Backup',icon:'💾',sub:'Einstellungen (Admin)',section:'backup'},
{type:'settings',label:'Datenbank sichern',icon:'💾',sub:'Einstellungen (Admin)',section:'backup'},
{type:'settings',label:'Datenbank wiederherstellen',icon:'♻️',sub:'Einstellungen (Admin)',section:'backup'},
// ── Dev-Tools Crontab ───────────────────────────────────────────────────
{type:'devtool',label:'Crontab',icon:'',sub:'Dev-Tools',tool:'cron'},
{type:'devtool',label:'Crontab erklären',icon:'⏱',sub:'Crontab',tool:'cron'},
{type:'devtool',label:'Crontab erstellen',icon:'',sub:'Crontab',tool:'cron'},
{type:'devtool',label:'Cronjob',icon:'',sub:'Crontab',tool:'cron'},
{type:'devtool',label:'Schedule',icon:'',sub:'Crontab',tool:'cron'},
// ── Dev-Tools Elektro ───────────────────────────────────────────────────
{type:'devtool',label:'Elektro-Rechner',icon:'',sub:'Dev-Tools',tool:'elektro'},
{type:'devtool',label:'Ohmsches Gesetz',icon:'',sub:'Elektro',tool:'elektro'},
{type:'devtool',label:'Spannung Strom Widerstand',icon:'⚡',sub:'Elektro',tool:'elektro'},
{type:'devtool',label:'Leistung Watt',icon:'',sub:'Elektro',tool:'elektro'},
{type:'devtool',label:'Stromkosten berechnen',icon:'',sub:'Elektro',tool:'elektro'},
{type:'devtool',label:'Widerstände Serie Parallel',icon:'',sub:'Elektro',tool:'elektro'},
{type:'devtool',label:'Wirkungsgrad',icon:'',sub:'Elektro',tool:'elektro'},
{type:'devtool',label:'kWh Verbrauch',icon:'⚡',sub:'Elektro',tool:'elektro'},
// ── Dev-Tools JSON ──────────────────────────────────────────────────────
{type:'devtool',label:'JSON Viewer',icon:'{}',sub:'Dev-Tools',tool:'json'},
{type:'devtool',label:'JSON Builder',icon:'{}',sub:'Dev-Tools',tool:'json'},
{type:'devtool',label:'JSON formatieren',icon:'{}',sub:'JSON',tool:'json'},
{type:'devtool',label:'XML konvertieren',icon:'{}',sub:'JSON',tool:'json'},
{type:'devtool',label:'JSON zu XML',icon:'{}',sub:'JSON',tool:'json'},
// ── Dev-Tools Regex ─────────────────────────────────────────────────────
{type:'devtool',label:'Regex Builder',icon:'🔍',sub:'Dev-Tools',tool:'regex'},
{type:'devtool',label:'Regex erklären',icon:'🔍',sub:'Regex',tool:'regex'},
{type:'devtool',label:'Regulärer Ausdruck',icon:'🔍',sub:'Regex',tool:'regex'},
{type:'devtool',label:'E-Mail Regex',icon:'🔍',sub:'Regex',tool:'regex'},
{type:'devtool',label:'PLZ Regex',icon:'🔍',sub:'Regex',tool:'regex'},
{type:'devtool',label:'URL Regex',icon:'🔍',sub:'Regex',tool:'regex'},
// ── Dev-Tools Text Diff ─────────────────────────────────────────────────
{type:'devtool',label:'Text Diff',icon:'±',sub:'Dev-Tools',tool:'diff'},
{type:'devtool',label:'Texte vergleichen',icon:'±',sub:'Text Diff',tool:'diff'},
{type:'devtool',label:'Unterschiede finden',icon:'±',sub:'Text Diff',tool:'diff'},
// ── Dev-Tools Netzwerk ──────────────────────────────────────────────────
{type:'devtool',label:'Netzwerk-Rechner',icon:'🌐',sub:'Dev-Tools',tool:'netzwerk'},
{type:'devtool',label:'IP Adresse',icon:'🌐',sub:'Netzwerk',tool:'netzwerk'},
{type:'devtool',label:'Subnetz Maske',icon:'🌐',sub:'Netzwerk',tool:'netzwerk'},
{type:'devtool',label:'CIDR Tabelle',icon:'🌐',sub:'Netzwerk',tool:'netzwerk'},
{type:'devtool',label:'Mbit/s MB/s Umrechner',icon:'🌐',sub:'Netzwerk',tool:'netzwerk'},
{type:'devtool',label:'Downloadzeit berechnen',icon:'🌐',sub:'Netzwerk',tool:'netzwerk'},
{type:'devtool',label:'Ping IPv4',icon:'🌐',sub:'Netzwerk',tool:'netzwerk'},
// ── Dev-Tools Datetime ──────────────────────────────────────────────────
{type:'devtool',label:'Datetime Rechner',icon:'📅',sub:'Dev-Tools',tool:'datetime'},
{type:'devtool',label:'Unix Timestamp',icon:'📅',sub:'Datetime',tool:'datetime'},
{type:'devtool',label:'Moseszeit Umrechner',icon:'📅',sub:'Datetime',tool:'datetime'},
{type:'devtool',label:'Geburtstagsrechner',icon:'🎂',sub:'Datetime',tool:'datetime'},
{type:'devtool',label:'Zeitdifferenz',icon:'📅',sub:'Datetime',tool:'datetime'},
{type:'devtool',label:'Datum umrechnen',icon:'📅',sub:'Datetime',tool:'datetime'},
{type:'devtool',label:'Kalenderwoche',icon:'📅',sub:'Datetime',tool:'datetime'},
// ── Dev-Tools Farben ────────────────────────────────────────────────────
{type:'devtool',label:'Farb-Rechner',icon:'🎨',sub:'Dev-Tools',tool:'farben'},
{type:'devtool',label:'HEX RGB HSL',icon:'🎨',sub:'Farben',tool:'farben'},
{type:'devtool',label:'CMYK Farbkonverter',icon:'🎨',sub:'Farben',tool:'farben'},
{type:'devtool',label:'Color Picker',icon:'🎨',sub:'Farben',tool:'farben'},
{type:'devtool',label:'WCAG Kontrast',icon:'🎨',sub:'Farben',tool:'farben'},
{type:'devtool',label:'Farbcode',icon:'🎨',sub:'Farben',tool:'farben'},
// ── Dev-Tools Key-Gen ───────────────────────────────────────────────────
{type:'devtool',label:'Key-Generator',icon:'🔐',sub:'Dev-Tools',tool:'keygen'},
{type:'devtool',label:'Laravel APP_KEY',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'JWT Secret HS256',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'JWT Secret HS512',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'AES-256 Key',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'AES-128 Key',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'Generic Secret',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'Passwort Generator',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'UUID v4',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'NanoID',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'DB-Passwort Docker',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'Hex Token',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'Base64 Token',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'Base64url',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'NEXTAUTH_SECRET',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'MYSQL_ROOT_PASSWORD',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'POSTGRES_PASSWORD',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'SESSION_SECRET',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'Webhook Signing Secret',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'VAPID Key',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'OAuth Client Secret',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
{type:'devtool',label:'API Key generieren',icon:'🔐',sub:'Key-Gen',tool:'keygen'},
// ── Dev-Tools QR-Code ───────────────────────────────────────────────────
{type:'devtool',label:'QR-Code Generator',icon:'◻',sub:'Dev-Tools',tool:'qrcode'},
{type:'devtool',label:'QR-Code erstellen',icon:'◻',sub:'QR-Code',tool:'qrcode'},
{type:'devtool',label:'QR-Code herunterladen',icon:'◻',sub:'QR-Code',tool:'qrcode'},
{type:'tool',label:'Bestellungen',icon:'📦',sub:'3D-Druck',id:'bestellungen',keywords:['order','auftrag','3d druck']},
{type:'tool',label:'Kalkulator3D',icon:'🖨',sub:'3D-Druck',id:'kalkulator3d',keywords:['kalkulator','rechner','3d archiv','archiv','berechnen','filament','druckkosten']},
{type:'tool',label:'3D-Archiv',icon:'🖨',sub:'3D-Druck',id:'kalkulator3d',keywords:['archiv','druck']},
{type:'tool',label:'Dateien',icon:'📁',sub:'Werkzeuge',id:'dateien',keywords:['datei','file','upload','dokument','ordner','speicher']},
{type:'tool',label:'Nachrichten',icon:'💬',sub:'Werkzeuge',id:'nachrichten',keywords:['chat','nachricht','message','kommunikation','e2e','verschlüsselt']},
{type:'tool',label:'Linkliste',icon:'🔗',sub:'Werkzeuge',id:'linkliste',keywords:['link','url','lesezeichen','bookmark','webseite']},
{type:'tool',label:'Code-Schnipsel',icon:'📄',sub:'Werkzeuge',id:'codeschnipsel',keywords:['code','snippet','skript','programmierung','source']},
{type:'tool',label:'CAD-Skizzen',icon:'📐',sub:'Werkzeuge',id:'skizze',keywords:['cad','skizze','zeichnung','sketch']},
{type:'tool',label:'Dev-Tools',icon:'🔧',sub:'Werkzeuge',id:'devtools',keywords:['entwickler','developer','tools','werkzeuge']},
// ── Dashboard-Widgets ──────────────────────────────────────────────────
{type:'tool',label:'Schnellzugriff',icon:'',sub:'Dashboard',id:'dashboard',keywords:['quick','links','favoriten','shortcuts']},
{type:'tool',label:'Kalender',icon:'📅',sub:'Dashboard',id:'dashboard',keywords:['kalender','termine','events','ical','abo']},
{type:'tool',label:'ToDo',icon:'',sub:'Dashboard',id:'dashboard',keywords:['todo','aufgabe','task','erledigt','checkliste']},
{type:'tool',label:'Notizen',icon:'📝',sub:'Dashboard',id:'dashboard',keywords:['notiz','note','memo','text']},
{type:'tool',label:'Push-Erinnerungen',icon:'🔔',sub:'Dashboard',id:'dashboard',keywords:['push','erinnerung','benachrichtigung','reminder','alarm']},
{type:'tool',label:'Board / Roadmap',icon:'🗺',sub:'Dashboard',id:'dashboard',keywords:['roadmap','wünsche','board','ideen','planung','feature']},
{type:'tool',label:'Changelog',icon:'📋',sub:'Dashboard',id:'dashboard',keywords:['changelog','versionen','updates','änderungen']},
// ── Einstellungen ────────────────────────────────────────────────────────
{type:'settings',label:'Profil',icon:'👤',sub:'Einstellungen',section:'profil',keywords:['avatar','benutzername','username','account','konto']},
{type:'settings',label:'Passwort ändern',icon:'🔑',sub:'Einstellungen → Profil',section:'profil',keywords:['passwort','password','sicherheit','ändern']},
{type:'settings',label:'Benutzername ändern',icon:'✏️',sub:'Einstellungen → Profil',section:'profil',keywords:['benutzername','username','name']},
{type:'settings',label:'Pushover',icon:'🔔',sub:'Einstellungen → Profil',section:'profil',keywords:['pushover','push','api key','token','benachrichtigung','notification']},
{type:'settings',label:'Account löschen',icon:'⚠️',sub:'Einstellungen → Profil',section:'profil',keywords:['löschen','delete','entfernen']},
{type:'settings',label:'Sicherheit',icon:'🔒',sub:'Einstellungen',section:'sicherheit',keywords:['login','sperrung','schutz','lockout','versuche']},
{type:'settings',label:'Login-Schutz',icon:'🔒',sub:'Einstellungen → Sicherheit',section:'sicherheit',keywords:['login schutz','lockout','sperrung','fehlversuche']},
{type:'settings',label:'Dashboard-Einstellungen',icon:'🏠',sub:'Einstellungen',section:'dashboard',keywords:['schnellzugriff','kalender','ical','widgets']},
{type:'settings',label:'iCal Kalender hinzufügen',icon:'📅',sub:'Einstellungen → Dashboard',section:'dashboard',keywords:['ical','kalender','abo','feed','url']},
{type:'settings',label:'Benutzer verwalten',icon:'👥',sub:'Einstellungen (Admin)',section:'benutzer',keywords:['user','benutzer','admin','anlegen','erstellen','löschen']},
{type:'settings',label:'Datei-Limits',icon:'📁',sub:'Einstellungen (Admin)',section:'benutzer',keywords:['datei limit','speicher','quota','upload limit']},
{type:'settings',label:'Backup',icon:'💾',sub:'Einstellungen (Admin)',section:'backup',keywords:['backup','sicherung','wiederherstellen','export','import','datenbank']},
// ── Crontab ─────────────────────────────────────────────────────────────
{type:'devtool',label:'Crontab',icon:'',sub:'Dev-Tools',tool:'cron',keywords:['cron','cronjob','schedule','zeitplan','scheduler','interval','task','job','automatisch','wiederkehrend']},
{type:'devtool',label:'Crontab erklären',icon:'⏱',sub:'Crontab',tool:'cron',keywords:['erklären','explain','verstehen','bedeutung','syntax','auslesen']},
{type:'devtool',label:'Crontab erstellen',icon:'',sub:'Crontab',tool:'cron',keywords:['erstellen','generator','bauen','konfigurieren','jede minute','täglich','wöchentlich']},
// ── Elektro ─────────────────────────────────────────────────────────────
{type:'devtool',label:'Elektro-Rechner',icon:'',sub:'Dev-Tools',tool:'elektro',keywords:['elektro','elektrizität','elektronik','schaltkreis','physik']},
{type:'devtool',label:'Ohmsches Gesetz U=R·I',icon:'',sub:'Elektro',tool:'elektro',keywords:['ohm','ohmsches gesetz','spannung','strom','widerstand','volt','ampere','resistance','voltage','current','u=ri','u=r*i']},
{type:'devtool',label:'Leistung P=U·I',icon:'⚡',sub:'Elektro',tool:'elektro',keywords:['leistung','watt','kilowatt','power','p=ui','p=u*i','energieverbrauch','verbrauch']},
{type:'devtool',label:'Stromkosten berechnen',icon:'',sub:'Elektro',tool:'elektro',keywords:['stromkosten','kosten','preis','kwh','kilowattstunde','jahreskosten','monatlich','preisrechner']},
{type:'devtool',label:'Widerstände Serie & Parallel',icon:'⚡',sub:'Elektro',tool:'elektro',keywords:['widerstand','serie','parallel','reihenschaltung','parallelschaltung','gesamtwiderstand']},
{type:'devtool',label:'Wirkungsgrad',icon:'',sub:'Elektro',tool:'elektro',keywords:['wirkungsgrad','effizienz','efficiency','verluste','nutzleistung','eta']},
// ── JSON ──────────────────────────────────────────────────────────────
{type:'devtool',label:'JSON Viewer / Builder',icon:'{}',sub:'Dev-Tools',tool:'json',keywords:['json','javascript object','daten','struktur','objekt','array','xml','konvertieren','formatieren','prettify','minify','validieren']},
// ── Regex ─────────────────────────────────────────────────────────────
{type:'devtool',label:'Regex Builder',icon:'🔍',sub:'Dev-Tools',tool:'regex',keywords:['regex','regexp','regulärer ausdruck','pattern','muster','match','suchen','validierung','e-mail regex','plz regex','telefon regex','url regex','ip regex','datum regex','zahlen regex']},
// ── Text Diff ────────────────────────────────────────────────────────
{type:'devtool',label:'Text Diff',icon:'±',sub:'Dev-Tools',tool:'diff',keywords:['diff','vergleich','unterschied','unterschiede','änderungen','delta','merge','texte vergleichen','versions vergleich']},
// ── Netzwerk ────────────────────────────────────────────────────────
{type:'devtool',label:'Netzwerk-Rechner',icon:'🌐',sub:'Dev-Tools',tool:'netzwerk',keywords:['netzwerk','network','internet','lan','wan','router']},
{type:'devtool',label:'Geschwindigkeit: Mbit/s ↔ MB/s',icon:'🌐',sub:'Netzwerk',tool:'netzwerk',keywords:['geschwindigkeit','speed','mbit','gbit','megabit','gigabit','mb/s','gb/s','mbit/s','gbit/s','megabyte','gigabyte','bandbreite','bandwidth','download','upload','transfer','übertragung','internetgeschwindigkeit','downloadzeit','dauer']},
{type:'devtool',label:'IP / Subnetz Rechner',icon:'🌐',sub:'Netzwerk',tool:'netzwerk',keywords:['ip','ipv4','ipv6','subnet','subnetz','subnetzmaske','netzmaske','gateway','cidr','broadcast','netzadresse','hostbereich','slash notation']},
{type:'devtool',label:'CIDR Tabelle',icon:'🌐',sub:'Netzwerk',tool:'netzwerk',keywords:['cidr','prefix','klasse a','klasse b','klasse c','hosts','adressen','/24','/16','/8']},
// ── Datetime ─────────────────────────────────────────────────────────
{type:'devtool',label:'Datetime / Zeitrechner',icon:'📅',sub:'Dev-Tools',tool:'datetime',keywords:['datum','zeit','time','date','rechner','kalender']},
{type:'devtool',label:'Unix Timestamp ↔ Datum',icon:'📅',sub:'Datetime',tool:'datetime',keywords:['unix','timestamp','epoch','sekunden','millisekunden','umrechnen','konvertieren','unixzeit']},
{type:'devtool',label:'Moseszeit Umrechner',icon:'📅',sub:'Datetime',tool:'datetime',keywords:['moses','moseszeit','moses time','proprietär','spezial']},
{type:'devtool',label:'Geburtstagsrechner',icon:'🎂',sub:'Datetime',tool:'datetime',keywords:['geburtstag','alter','geburtsdatum','jahre','monate','tage','birthday','age','wie alt']},
{type:'devtool',label:'Zeitdifferenz berechnen',icon:'📅',sub:'Datetime',tool:'datetime',keywords:['zeitdifferenz','differenz','abstand','dauer','zeitraum','zwischen','tage berechnen','stunden berechnen']},
{type:'devtool',label:'Datum / Kalenderwoche',icon:'📅',sub:'Datetime',tool:'datetime',keywords:['kalenderwoche','kw','wochentag','weekday','woche']},
// ── Farben ──────────────────────────────────────────────────────────
{type:'devtool',label:'Farb-Rechner',icon:'🎨',sub:'Dev-Tools',tool:'farben',keywords:['farbe','color','colour','design','palette']},
{type:'devtool',label:'HEX ↔ RGB ↔ HSL ↔ CMYK',icon:'🎨',sub:'Farben',tool:'farben',keywords:['hex','rgb','hsl','hsv','cmyk','oklch','rgba','hsla','farbraum','konvertieren','farbwert','farbcode','#ffffff','css farbe']},
{type:'devtool',label:'Color Picker',icon:'🎨',sub:'Farben',tool:'farben',keywords:['color picker','farbwähler','farbauswahl','pipette','picker']},
{type:'devtool',label:'WCAG Kontrast',icon:'🎨',sub:'Farben',tool:'farben',keywords:['wcag','kontrast','accessibility','barrierefrei','contrast ratio','lesbarkeit','aa','aaa']},
// ── Key-Gen ─────────────────────────────────────────────────────────
{type:'devtool',label:'Key-Generator',icon:'🔐',sub:'Dev-Tools',tool:'keygen',keywords:['key','schlüssel','geheim','secret','generator','passwort','zufällig','sicher','random']},
{type:'devtool',label:'Laravel APP_KEY',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['laravel','app_key','php','framework','base64:']},
{type:'devtool',label:'JWT Secret HS256/HS512',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['jwt','json web token','hs256','hs512','bearer','auth token','authentication']},
{type:'devtool',label:'AES-256 / AES-128 Key',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['aes','aes256','aes128','verschlüsselung','encryption','symmetrisch','cipher']},
{type:'devtool',label:'UUID v4',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['uuid','uid','guid','identifier','eindeutig','unique id']},
{type:'devtool',label:'NanoID',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['nanoid','nano','kurz','compact','id']},
{type:'devtool',label:'Passwort Generator',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['passwort','password','sicher','stark','zufällig','sonderzeichen']},
{type:'devtool',label:'Docker / DB Passwort',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['docker','mysql','postgres','mariadb','db passwort','datenbank passwort','compose']},
{type:'devtool',label:'Hex / Base64 Token',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['hex','base64','base64url','token','random bytes','crypto']},
{type:'devtool',label:'NEXTAUTH_SECRET',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['nextauth','next auth','nextjs','next.js','auth.js']},
{type:'devtool',label:'VAPID Key',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['vapid','web push','push notification','service worker']},
{type:'devtool',label:'OAuth / Webhook Secret',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['oauth','webhook','signing secret','hmac','client secret']},
{type:'devtool',label:'Session Secret',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['session','express session','cookie secret','session_secret']},
{type:'devtool',label:'MYSQL / POSTGRES Passwort',icon:'🔐',sub:'Key-Gen',tool:'keygen',keywords:['mysql','mysql_root_password','postgres','postgresql','postgres_password','mariadb']},
// ── QR-Code ────────────────────────────────────────────────────────
{type:'devtool',label:'QR-Code Generator',icon:'',sub:'Dev-Tools',tool:'qrcode',keywords:['qr','qr code','qrcode','barcode','scan','scannen','link teilen','url teilen']},
];
function GlobalSearch({ setActive, setDevToolsNav, mobile }) {
@@ -1629,8 +1588,9 @@ function GlobalSearch({ setActive, setDevToolsNav, mobile }) {
return SEARCH_TOOL_INDEX.filter(t =>
t.label.toLowerCase().includes(lq) ||
t.sub.toLowerCase().includes(lq) ||
(t.tool||t.id||'').toLowerCase().includes(lq)
).slice(0, 6);
(t.tool||t.id||'').toLowerCase().includes(lq) ||
(t.keywords||[]).some(k => k.toLowerCase().includes(lq))
).slice(0, 8);
}
useEffect(() => {