import { importedKotschTools } from "@/tools/kotsch-imports";

export type ToolCategory =
  | "generator"
  | "calculator"
  | "converter"
  | "text"
  | "security"
  | "image"
  | "developer";

export interface ToolFAQ {
  question: string;
  answer: string;
}

export interface Tool {
  slug: string;
  name: string;
  description: string;
  category: ToolCategory;
  keywords: string[];
  icon: string;
  component: string;
  seoTitle: string;
  seoDescription: string;
  notice?: string;
  faqs: ToolFAQ[];
  featured?: boolean;
}

export const toolRegistry: Tool[] = [
  {
    slug: "qr-code-generator",
    name: "QR-Code Generator",
    description: "Text oder URL in QR-Code umwandeln und als PNG herunterladen.",
    category: "generator",
    keywords: [
      "qr code",
      "qr generator",
      "qrcode",
      "barcode",
      "url to qr",
      "qr code erstellen",
      "qr code generator kostenlos",
      "link in qr code umwandeln",
      "text als qr code",
      "qr code png download",
    ],
    icon: "QrCode",
    component: "qr-code-generator",
    seoTitle: "QR-Code Generator - kostenlos & ohne Anmeldung | Toolaro",
    seoDescription:
      "QR-Code kostenlos aus Text oder URL erstellen und als PNG herunterladen. Kein Account nötig, sofort nutzbar.",
    notice:
      "Bitte teste QR-Codes vor der geschäftlichen, öffentlichen oder gedruckten Nutzung. Toolaro übernimmt keine Gewähr für Lesbarkeit auf allen Geräten, Materialien oder Druckgrößen.",
    featured: true,
    faqs: [
      {
        question: "Ist der QR-Code Generator kostenlos?",
        answer: "Ja, vollständig kostenlos. Kein Account erforderlich.",
      },
      {
        question: "Welche Inhalte kann ich als QR-Code kodieren?",
        answer:
          "URLs, Text, E-Mail-Adressen, Telefonnummern - alles was als Text darstellbar ist.",
      },
      {
        question: "Wo werden die Daten gespeichert?",
        answer:
          "Gar nicht. Die QR-Code-Generierung erfolgt direkt in deinem Browser ohne Server-Upload.",
      },
    ],
  },
  {
    slug: "password-generator",
    name: "Passwort-Generator",
    description: "Sichere Passwörter generieren - Länge und Zeichentypen frei wählbar.",
    category: "security",
    keywords: [
      "passwort generator",
      "password",
      "sicheres passwort",
      "zufälliges passwort",
      "passwort erstellen",
      "password generator kostenlos",
      "starkes passwort generieren",
      "zufallspasswort",
      "passwort mit sonderzeichen",
    ],
    icon: "KeyRound",
    component: "password-generator",
    seoTitle: "Passwort-Generator - sicher & kostenlos | Toolaro",
    seoDescription:
      "Sichere, zufällige Passwörter kostenlos generieren. Länge und Zeichentypen frei einstellbar. Ohne Anmeldung.",
    notice:
      "Generierte Passwörter werden nicht von Toolaro gespeichert. Speichere Passwörter nur in einem vertrauenswürdigen Passwortmanager und teile sie nicht über unsichere Kanäle.",
    featured: true,
    faqs: [
      {
        question: "Werden die generierten Passwörter gespeichert?",
        answer: "Nein. Alle Passwörter werden ausschließlich lokal in deinem Browser generiert.",
      },
      {
        question: "Wie sicher sind die generierten Passwörter?",
        answer:
          "Die Zufallswerte werden mit der Web Crypto API des Browsers erzeugt. Die praktische Sicherheit hängt trotzdem von Länge, Zeichenauswahl, Speicherung und Nutzung ab.",
      },
    ],
  },
  {
    slug: "percent-calculator",
    name: "Prozentrechner",
    description: "Prozente berechnen: X% von Y, Prozentverhältnis, prozentuale Veränderung.",
    category: "calculator",
    keywords: [
      "prozentrechner",
      "prozent berechnen",
      "prozentsatz",
      "prozentualer anteil",
      "prozentuale veränderung",
      "x prozent von y",
      "rabatt berechnen",
      "mehrwertsteuer prozent",
      "prozent differenz berechnen",
      "preisnachlass berechnen",
    ],
    icon: "Percent",
    component: "percent-calculator",
    seoTitle: "Prozentrechner - kostenlos & sofort | Toolaro",
    seoDescription:
      "Prozente einfach berechnen: X Prozent von Y, Prozentverhältnis und prozentuale Veränderung. Kostenlos, ohne Anmeldung.",
    notice:
      "Die Ergebnisse dienen nur als Rechenhilfe und ersetzen keine Finanz-, Steuer- oder Rechtsberatung.",
    featured: true,
    faqs: [
      {
        question: "Welche Prozentberechnungen sind möglich?",
        answer:
          "Drei Modi: X% von Y, X ist wie viel % von Y, und prozentuale Veränderung von X auf Y.",
      },
      {
        question: "Ist der Prozentrechner kostenlos?",
        answer: "Ja, vollständig kostenlos ohne Anmeldung.",
      },
    ],
  },
  {
    slug: "word-counter",
    name: "Wortzähler",
    description: "Wörter, Zeichen, Sätze, Absätze und geschätzte Lesezeit sofort zählen.",
    category: "text",
    keywords: [
      "wortzähler",
      "zeichen zählen",
      "text analyse",
      "lesezeit",
      "word counter",
      "wörter zählen online",
      "zeichen ohne leerzeichen",
      "textlänge prüfen",
      "satz zählen",
      "absätze zählen",
    ],
    icon: "FileText",
    component: "word-counter",
    seoTitle: "Wortzähler - Wörter & Zeichen kostenlos zählen | Toolaro",
    seoDescription:
      "Kostenlos Wörter, Zeichen, Sätze, Absätze und Lesezeit zählen. Läuft direkt im Browser und ohne Anmeldung.",
    notice:
      "Gib keine vertraulichen Inhalte ein, wenn nicht eindeutig sichergestellt ist, dass die Verarbeitung vollständig lokal im Browser erfolgt.",
    featured: true,
    faqs: [
      {
        question: "Werden meine Texte gespeichert?",
        answer: "Nein. Die Analyse läuft direkt im Browser, ohne Upload.",
      },
      {
        question: "Was zählt der Wortzähler?",
        answer: "Wörter, Zeichen mit und ohne Leerzeichen, Sätze, Absätze und Lesezeit.",
      },
    ],
  },
  {
    slug: "case-converter",
    name: "Text umwandeln",
    description: "Text in Großbuchstaben, kleinbuchstaben, Title Case oder Slug-Format umwandeln.",
    category: "text",
    keywords: [
      "text umwandeln",
      "uppercase",
      "lowercase",
      "title case",
      "slug generator",
      "großbuchstaben umwandeln",
      "kleinbuchstaben umwandeln",
      "url slug erstellen",
      "text formatter",
      "capital case",
    ],
    icon: "Type",
    component: "case-converter",
    seoTitle: "Text umwandeln - Groß/Klein, Title Case & Slug | Toolaro",
    seoDescription:
      "Text kostenlos in verschiedene Schreibweisen umwandeln: Großbuchstaben, Kleinbuchstaben, Title Case und URL-Slug.",
    notice:
      "Gib keine vertraulichen Inhalte ein, wenn nicht eindeutig sichergestellt ist, dass die Verarbeitung vollständig lokal im Browser erfolgt.",
    featured: true,
    faqs: [
      {
        question: "Kann ich daraus SEO-Slugs erzeugen?",
        answer: "Ja. Der Slug-Modus erzeugt einfache, URL-freundliche Schreibweisen.",
      },
      {
        question: "Funktioniert das ohne Anmeldung?",
        answer: "Ja, alle Umwandlungen laufen kostenlos und direkt im Browser.",
      },
    ],
  },
  {
    slug: "base64-encoder",
    name: "Base64 Encoder",
    description: "Text als Base64 kodieren oder Base64 wieder zurück in lesbaren Text dekodieren.",
    category: "developer",
    keywords: [
      "base64",
      "base64 encoder",
      "base64 decoder",
      "entwickler tool",
      "base64 kodieren",
      "base64 dekodieren",
      "text in base64",
      "base64 online",
      "base64 decode",
    ],
    icon: "Binary",
    component: "base64-encoder",
    seoTitle: "Base64 Encoder & Decoder - kostenlos online | Toolaro",
    seoDescription:
      "Base64 Text kostenlos kodieren und dekodieren. Schnelles Entwickler-Tool ohne Anmeldung.",
    notice: "Base64 ist keine Verschlüsselung und schützt Daten nicht vor Zugriff durch Dritte.",
    faqs: [
      {
        question: "Was ist Base64?",
        answer:
          "Base64 ist eine Textkodierung, mit der Daten sicher in textbasierten Formaten übertragen werden können.",
      },
      {
        question: "Werden meine Eingaben übertragen?",
        answer: "Nein. Kodierung und Dekodierung passieren lokal im Browser.",
      },
    ],
  },
  {
    slug: "timestamp-converter",
    name: "Timestamp Converter",
    description: "Unix-Zeitstempel in Datum umwandeln und aktuelle Zeitstempel erzeugen.",
    category: "developer",
    keywords: [
      "timestamp",
      "unix timestamp",
      "zeitstempel",
      "datum konverter",
      "timestamp converter",
      "unix zeit umwandeln",
      "epoch converter",
      "timestamp in datum",
      "aktueller timestamp",
    ],
    icon: "Clock",
    component: "timestamp-converter",
    seoTitle: "Timestamp Converter - Unix-Zeit kostenlos umwandeln | Toolaro",
    seoDescription:
      "Unix-Timestamps kostenlos in Datum umwandeln und aktuelle Zeitstempel erzeugen. Schnell, lokal und ohne Login.",
    notice:
      "Zeitzonen, Systemeinstellungen und Formate können die Darstellung beeinflussen. Prüfe Ergebnisse bei kritischer Nutzung.",
    faqs: [
      {
        question: "Welche Timestamp-Formate werden unterstützt?",
        answer: "Sekunden und Millisekunden seit dem Unix-Epoch werden automatisch erkannt.",
      },
      {
        question: "Zeigt das Tool lokale Zeit an?",
        answer: "Ja. Es zeigt lokale Zeit und ISO-Zeit an.",
      },
    ],
  },
  {
    slug: "bmi-calculator",
    name: "BMI Rechner",
    description: "Body-Mass-Index aus Größe und Gewicht berechnen.",
    category: "calculator",
    keywords: [
      "bmi rechner",
      "body mass index",
      "gewicht",
      "größe",
      "gesundheit",
      "bmi berechnen",
      "body mass index berechnen",
      "bmi calculator",
      "bmi tabelle",
    ],
    icon: "Scale",
    component: "bmi-calculator",
    seoTitle: "BMI Rechner - Body-Mass-Index kostenlos berechnen | Toolaro",
    seoDescription:
      "BMI kostenlos aus Größe und Gewicht berechnen. Sofort im Browser, ohne Anmeldung.",
    notice:
      "Der BMI ist nur ein grober Orientierungswert und ersetzt keine medizinische Beratung oder Diagnose.",
    faqs: [
      {
        question: "Ist der BMI eine medizinische Diagnose?",
        answer: "Nein. Der BMI ist nur ein grober Orientierungswert und ersetzt keine Beratung.",
      },
      {
        question: "Welche Einheiten nutzt der Rechner?",
        answer: "Größe in Zentimetern und Gewicht in Kilogramm.",
      },
    ],
  },
  {
    slug: "uuid-generator",
    name: "UUID Generator",
    description: "Sichere UUIDs für Tests, Datenbanken und Entwickler-Projekte erzeugen.",
    category: "developer",
    keywords: [
      "uuid",
      "uuid generator",
      "guid",
      "entwickler",
      "random id",
      "uuid v4",
      "guid generator",
      "random uuid",
      "id generator",
    ],
    icon: "Hash",
    component: "uuid-generator",
    seoTitle: "UUID Generator - kostenlose UUIDs online erzeugen | Toolaro",
    seoDescription:
      "UUIDs kostenlos im Browser erzeugen und kopieren. Praktisch für Entwickler, Tests und Datenbanken.",
    featured: true,
    faqs: [
      {
        question: "Welche UUID-Version wird erzeugt?",
        answer: "Das Tool nutzt die moderne Browser-Funktion crypto.randomUUID für UUID v4.",
      },
      {
        question: "Werden UUIDs gespeichert?",
        answer: "Nein. Die UUIDs entstehen lokal im Browser.",
      },
    ],
  },
  {
    slug: "random-number-generator",
    name: "Zufallszahl Generator",
    description: "Eine oder mehrere sichere Zufallszahlen innerhalb eines Bereichs erzeugen.",
    category: "generator",
    keywords: [
      "zufallszahl",
      "random number",
      "zahl generator",
      "randomizer",
      "zufallszahl generator",
      "random number generator",
      "zahlen auslosen",
      "zahl zwischen zwei werten",
    ],
    icon: "Shuffle",
    component: "random-number-generator",
    seoTitle: "Zufallszahl Generator - kostenlos online | Toolaro",
    seoDescription:
      "Zufallszahlen kostenlos im Browser erzeugen. Minimum, Maximum und Anzahl frei wählen.",
    faqs: [
      {
        question: "Sind die Zufallszahlen sicher?",
        answer: "Das Tool nutzt crypto.getRandomValues des Browsers.",
      },
      {
        question: "Kann ich mehrere Zahlen erzeugen?",
        answer: "Ja, bis zu 100 Zahlen auf einmal.",
      },
    ],
  },
  {
    slug: "json-formatter",
    name: "JSON Formatter",
    description: "JSON formatieren, validieren und minifizieren.",
    category: "developer",
    keywords: [
      "json formatter",
      "json validieren",
      "json minify",
      "developer tool",
      "json formatieren",
      "json validator",
      "json beautifier",
      "json online formatter",
      "json komprimieren",
    ],
    icon: "Braces",
    component: "json-formatter",
    seoTitle: "JSON Formatter - JSON kostenlos formatieren | Toolaro",
    seoDescription:
      "JSON kostenlos formatieren, validieren und minifizieren. Schnelles Entwickler-Tool ohne Anmeldung.",
    featured: true,
    faqs: [
      {
        question: "Wird mein JSON hochgeladen?",
        answer: "Nein. Formatierung und Validierung laufen direkt im Browser.",
      },
      {
        question: "Kann das Tool JSON minifizieren?",
        answer: "Ja. Es kann JSON lesbar formatieren oder kompakt minifizieren.",
      },
    ],
  },
  {
    slug: "unit-converter",
    name: "Einheiten-Umrechner",
    description: "Länge, Masse, Temperatur, Fläche, Volumen, Geschwindigkeit, Zeit, Druck, Energie, Leistung, Datenmengen und Winkel umrechnen.",
    category: "converter",
    keywords: [
      "einheiten umrechnen",
      "länge",
      "masse",
      "meter",
      "kilogramm",
      "einheiten rechner",
      "meter in kilometer",
      "kg in gramm",
      "längen umrechner",
      "masse umrechner",
    ],
    icon: "Ruler",
    component: "unit-converter",
    seoTitle: "Einheiten-Umrechner - kostenlos online | Toolaro",
    seoDescription:
      "Wichtige Einheiten kostenlos umrechnen: Länge, Masse, Temperatur, Fläche, Volumen, Geschwindigkeit, Zeit, Druck, Energie, Leistung, Datenmengen und Winkel.",
    faqs: [
      {
        question: "Welche Einheiten werden unterstützt?",
        answer: "Unterstützt werden Länge, Masse, Temperatur, Fläche, Volumen, Geschwindigkeit, Zeit, Druck, Energie, Leistung, Datenmengen und Winkel.",
      },
      {
        question: "Funktioniert der Umrechner offline im Browser?",
        answer: "Die Berechnung selbst läuft lokal im Browser.",
      },
    ],
  },
  {
    slug: "favicon-tester",
    name: "Favicon Tester",
    description: "Website-Favicons prüfen mit Live-Vorschau für Browser, iPhone, Android & Google – oder Bild hochladen und Favicon-Pack erzeugen.",
    category: "developer",
    keywords: [
      "favicon tester",
      "favicon checker",
      "favicon prüfen",
      "apple-touch-icon",
      "web manifest",
      "theme-color",
      "favicon vorschau",
      "favicon generator",
      "favicon.ico",
      "pwa icon",
    ],
    icon: "Image",
    component: "favicon-tester",
    seoTitle: "Favicon Tester – Website-Icons prüfen für Browser, iOS & Android | Toolaro",
    seoDescription:
      "Favicon-Tester kostenlos: URL eingeben und alle Favicons, Apple-Touch-Icons und das Web-Manifest prüfen – mit Live-Vorschau für Browser-Tab, iPhone, Android und Google. Oder Bild hochladen und Favicon-Pack herunterladen.",
    featured: true,
    faqs: [
      {
        question: "Welche Favicon-Größen brauche ich wirklich?",
        answer:
          "Ein favicon.ico oder 32x32-PNG für Browser-Tabs, ein apple-touch-icon.png in 180x180 für iOS und ein Web-App-Manifest mit 192x192- und 512x512-Icons für Android und PWA. Ein SVG-Favicon hält den Tab zusätzlich scharf.",
      },
      {
        question: "Warum sieht mein Favicon auf dem iPhone unscharf aus?",
        answer:
          "Ohne apple-touch-icon nimmt iOS einen verkleinerten Screenshot der Seite. Ein 180x180-PNG mit dem Logo, eingebunden per link rel=apple-touch-icon, lässt den Homescreen-Eintrag wie eine echte App aussehen.",
      },
      {
        question: "Werden meine Daten gespeichert?",
        answer:
          "Nein. Beim URL-Check wird nur die öffentliche Startseite samt Icon-Dateien geladen und geprüft, nichts gespeichert. Der Bild-Modus läuft vollständig in deinem Browser.",
      },
    ],
  },
  ...importedKotschTools,
];

export const categoryLabels: Record<ToolCategory, string> = {
  generator: "Generator",
  calculator: "Rechner",
  converter: "Konverter",
  text: "Text",
  security: "Sicherheit",
  image: "Bild",
  developer: "Developer",
};

export const categoryDescriptions: Record<ToolCategory, string> = {
  generator: "Generatoren für QR-Codes, Passwörter, UUIDs, Zufallswerte, Texte und produktive Vorlagen.",
  calculator: "Rechner für Alltag, Finanzen, Schule, Gesundheit, Arbeit, Reisen und schnelle Plausibilitätschecks.",
  converter: "Konverter für Einheiten, Textformate, Daten, Farben, Größen, Zeitwerte und technische Formate.",
  text: "Text- und Content-Tools zum Zählen, Umwandeln, Bereinigen, Sortieren, Prüfen und Vorbereiten.",
  security: "Sicherheitsnahe Tools für Passwörter, Checks, lokale Generatoren und vorsichtige Browser-Nutzung.",
  image: "Bild- und Design-Tools für Farben, Kontrast, Layout, Maße und visuelle Vorbereitung.",
  developer: "Developer-Tools für JSON, Base64, URLs, Regex, SQL, Timestamps, Hashes, CSV und Web-Workflows.",
};

export const categoryPluralLabels: Record<ToolCategory, string> = {
  generator: "kostenlose Generatoren",
  calculator: "kostenlose Rechner",
  converter: "kostenlose Konverter",
  text: "kostenlose Text-Tools",
  security: "kostenlose Sicherheits-Tools",
  image: "kostenlose Bild- und Design-Tools",
  developer: "kostenlose Developer-Tools",
};

export function getToolBySlug(slug: string): Tool | undefined {
  return toolRegistry.find((t) => t.slug === slug);
}

export function getToolsByCategory(category: ToolCategory): Tool[] {
  return toolRegistry.filter((t) => t.category === category);
}

export function getFeaturedTools(): Tool[] {
  return toolRegistry.filter((t) => t.featured);
}

export function getRelatedTools(slug: string, limit = 3): Tool[] {
  const current = getToolBySlug(slug);
  if (!current) return [];

  const curated: Record<string, string[]> = {
    "qr-code-generator": ["url-encoder", "text-tools", "base64-encoder", "uuid-generator"],
    "password-generator": ["password-check", "passphrase-generator", "hash-generator", "uuid-generator"],
    "json-formatter": ["base64-encoder", "url-encoder", "csv-json-konverter", "regex-tester", "timestamp-converter", "uuid-generator"],
    "bmi-calculator": ["kalorienrechner", "wasserrechner", "koerperfett-rechner", "schlaf-rechner"],
  };
  if (curated[slug]) {
    const picked = curated[slug].map((item) => getToolBySlug(item)).filter(Boolean) as Tool[];
    if (picked.length) return picked.slice(0, limit);
  }

  const sameCategory = toolRegistry.filter(
    (tool) => tool.slug !== slug && tool.category === current.category
  );
  const fallback = toolRegistry.filter(
    (tool) => tool.slug !== slug && tool.category !== current.category
  );

  return [...sameCategory, ...fallback].slice(0, limit);
}

export const allCategories: ToolCategory[] = [
  "generator",
  "calculator",
  "converter",
  "text",
  "security",
  "image",
  "developer",
];
