/* 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 { MotionFade } from "@/components/motion-fade"; 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", createTitle: "Neue Datei", createDescription: "Datei hochladen oder externe URL zentral fuer spaetere Wiederverwendung speichern.", label: "Bezeichnung", kind: "Typ", uploadFile: "Datei hochladen", externalUrl: "Externe URL", saveMedia: "Datei speichern", open: "Oeffnen", delete: "Loeschen", usages: "Verwendungen", noAssets: "Noch keine Dateien vorhanden.", }; 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} {copy.createTitle} {copy.createDescription}
{mediaAssets.map((asset, index) => ( {asset.label} {asset.kind} {asset.source} {asset.usages.length} {copy.usages} {asset.kind === "IMAGE" ? (
{asset.label}
) : (
{asset.fileName}
)}

{asset.url}

{copy.open}
{asset.usages.length > 0 ? (
{asset.usages.map((usage) => (

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

))}
) : null}
))}
{mediaAssets.length === 0 ? ( {copy.noAssets} ) : null}
); }