import { ExternalLink, FileCode2, Map as MapIcon, Bot, CheckCircle2, AlertTriangle, XCircle } from "lucide-react"; import Link from "next/link"; import { StatsCard } from "@/components/dashboard/stats-card"; import { AppCard } from "@/components/ui/app-card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import type { SeoCheck } from "@/lib/seo-report"; import { summarizeSeoChecklist } from "@/lib/seo-report"; import type { SeoSettings } from "@/lib/seo-settings"; import { cn } from "@/lib/utils"; type SeoSettingsFormProps = { action: (formData: FormData) => Promise; settings: SeoSettings; checks: SeoCheck[]; links: { sitemap: string; robots: string; manifest: string; }; sitemapEntryCount: number; }; const localeKeywordFields = [ { key: "de", name: "keywordsDe", label: "Keywords (Deutsch)" }, { key: "en", name: "keywordsEn", label: "Keywords (English)" }, { key: "ar", name: "keywordsAr", label: "Keywords (Arabic)" }, ] as const; function StatusIcon({ status }: { status: SeoCheck["status"] }) { if (status === "ok") { return ; } if (status === "warn") { return ; } return ; } function FileLink({ href, label, description, icon: Icon, }: { href: string; label: string; description: string; icon: typeof MapIcon; }) { return (

{label}

{description}

); } export function SeoSettingsForm({ action, settings, checks, links, sitemapEntryCount }: SeoSettingsFormProps) { const summary = summarizeSeoChecklist(checks); return (

Sichtbarkeit

Steuert robots.txt, die Sitemap und das robots Meta Tag aller oeffentlichen Seiten.

Verifizierung & Social

Codes aus Google Search Console / Bing Webmaster und das X-Handle fuer Twitter Cards.

Strukturierte Daten

JSON-LD fuer Google: Wer steht hinter der Seite? Gilt fuer alle Seiten und jede Projekt-Ansicht.