import { Plus } from "lucide-react"; import Link from "next/link"; import { redirect } from "next/navigation"; import { PortfolioSubnav } from "@/components/root/portfolio-subnav"; import { RootDashboardShell } from "@/components/root/root-dashboard-shell"; import { AppCard } from "@/components/ui/app-card"; import { Button } from "@/components/ui/button"; import { CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { clearAdminSessionCookie, isAdminAuthenticated } from "@/lib/admin-auth"; import { getAdminPortfolioCategories, getAdminPortfolioProjects, getLocalizedValue, } from "@/lib/portfolio"; export const dynamic = "force-dynamic"; const copy = { title: "Portfolio Projekte", subtitle: "Alle Projekte mit Status, Kategorie und Reihenfolge.", overview: "Uebersicht", maintenance: "Wartungsmodus", uiKit: "UI Kit", media: "Media", portfolio: "Portfolio", logout: "Ausloggen", backToSite: "Zur Website", newProject: "Neues Projekt", }; type RootPortfolioProjectsPageProps = { searchParams?: { category?: string; status?: "all" | "draft" | "published"; success?: string; error?: string; }; }; export default async function RootPortfolioProjectsPage({ searchParams, }: RootPortfolioProjectsPageProps) { if (!isAdminAuthenticated()) { redirect("/root"); } async function logoutAction() { "use server"; clearAdminSessionCookie(); redirect("/root"); } const selectedStatus = searchParams?.status === "draft" || searchParams?.status === "published" ? searchParams.status : "all"; const [categories, projects] = await Promise.all([ getAdminPortfolioCategories(), getAdminPortfolioProjects({ categoryId: searchParams?.category || undefined, status: selectedStatus, }), ]); return ( {copy.newProject} } >
{searchParams?.success ? (

{searchParams.success}

) : null} {searchParams?.error ? (

{searchParams.error}

) : null}
{projects.map((project) => (
{getLocalizedValue(project.title, "de")}

{project.category.name.de}

{project.isPublished ? "Published" : "Draft"} {project.projectYear} Sort {project.sortOrder}

{project.slug}

{project.previewUrl ? "Preview link set" : "No preview link"}

))} {projects.length === 0 ? ( No projects match the selected filters. ) : null}
); }