import { redirect } from "next/navigation"; import { MotionFade } from "@/components/motion-fade"; import { SeoSettingsForm } from "@/components/admin/seo-settings-form"; import { AdminDashboardShell } from "@/components/admin/admin-dashboard-shell"; import { readFlash } from "@/lib/admin-feedback"; import { clearAdminSessionCookie, isAdminAuthenticated } from "@/lib/admin-auth"; import { buildSiteUrl, getAdminAppPath } from "@/lib/admin-routing"; import { getMaintenanceMode, getSeoSettings, getSiteSettings, getSiteSettingsMediaBindings, } from "@/lib/app-config"; import { getSiteUrl } from "@/lib/metadata"; import { INTERNAL_MANIFEST_PATH } from "@/lib/site-icons"; import { getPublishedPortfolioProjects } from "@/lib/portfolio"; import { buildSeoChecklist } from "@/lib/seo-report"; import buildSitemap from "@/app/sitemap"; import { saveSeoSettingsAction } from "../actions"; export const dynamic = "force-dynamic"; const copy = { title: "SEO", subtitle: "Indexierung, Verifizierung, strukturierte Daten, Sitemap und robots.txt.", overview: "Uebersicht", maintenance: "Wartungsmodus", uiKit: "UI Kit", media: "Media", siteSettings: "Settings", brandSettings: "Brand", localizationSettings: "Localization", seoSettings: "SEO", smtp: "SMTP", portfolio: "Portfolio", logout: "Ausloggen", backToSite: "Zur Website", }; export default async function AdminSeoSettingsPage({ searchParams, }: { searchParams?: Promise<{ success?: string; error?: string }>; }) { const flash = readFlash(await searchParams); if (!(await isAdminAuthenticated())) { redirect(getAdminAppPath("/")); } async function logoutAction() { "use server"; await clearAdminSessionCookie(); redirect(getAdminAppPath("/")); } const [seo, siteSettings, bindings, maintenanceEnabled, projects, sitemapEntries] = await Promise.all([ getSeoSettings(), getSiteSettings(), getSiteSettingsMediaBindings(), getMaintenanceMode(), getPublishedPortfolioProjects().catch(() => []), buildSitemap().catch(() => []), ]); const checks = buildSeoChecklist({ seo, settings: siteSettings, bindings, maintenanceEnabled, publishedProjectCount: projects.length, sitemapEntryCount: sitemapEntries.length, siteUrl: getSiteUrl().origin, }); return ( ); }