/* eslint-disable @next/next/no-img-element */ import { ExternalLink, ImageIcon, Trash2 } from "lucide-react"; import Link from "next/link"; import { redirect } from "next/navigation"; import { RootDashboardShell } from "@/components/root/root-dashboard-shell"; import { AppCard } from "@/components/ui/app-card"; import { Button } from "@/components/ui/button"; import { CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { clearAdminSessionCookie, isAdminAuthenticated } from "@/lib/admin-auth"; import { getAdminMediaAssets } from "@/lib/media"; import { createMediaAssetAction, deleteMediaAssetAction } from "./actions"; export const dynamic = "force-dynamic"; const copy = { title: "Media Library", subtitle: "Zentrale Dateien fuer Portfolio und spaetere Inhaltsbereiche.", overview: "Uebersicht", maintenance: "Wartungsmodus", uiKit: "UI Kit", media: "Media", portfolio: "Portfolio", logout: "Ausloggen", backToSite: "Zur Website", }; type RootMediaPageProps = { searchParams?: { success?: string; error?: string; }; }; export default async function RootMediaPage({ searchParams }: RootMediaPageProps) { if (!isAdminAuthenticated()) { redirect("/root"); } async function logoutAction() { "use server"; clearAdminSessionCookie(); redirect("/root"); } const mediaAssets = await getAdminMediaAssets(); return (
{searchParams?.success ? (

{searchParams.success}

) : null} {searchParams?.error ? (

{searchParams.error}

) : null} New Media Asset Upload a file or store an external URL for reuse across the site.
{mediaAssets.map((asset) => ( {asset.label} {asset.kind} {asset.source} {asset.usages.length} usages {asset.kind === "IMAGE" ? (
{asset.label}
) : (
{asset.fileName}
)}

{asset.url}

Open
{asset.usages.length > 0 ? (
{asset.usages.map((usage) => (

{usage.usageType} / {usage.entityType} / {usage.fieldKey}

))}
) : null}
))}
{mediaAssets.length === 0 ? ( No media assets found yet. ) : null}
); }