import Link from "next/link"; import { Mail, Phone } from "lucide-react"; import { PageHeader } from "@/components/admin/form"; import { DeleteButton } from "@/components/admin/delete-button"; import { listMessages } from "@/lib/data"; import { deleteMessage, updateMessageStatus } from "@/lib/admin-actions"; import type { ContactMessageRow } from "@/lib/types"; const FILTERS = [ { value: "", label: "Tümü" }, { value: "new", label: "Yeni" }, { value: "read", label: "Okundu" }, { value: "replied", label: "Yanıtlandı" }, { value: "archived", label: "Arşiv" }, ]; export default async function MessagesAdminPage({ searchParams, }: { searchParams: Promise<{ filter?: string }>; }) { const sp = await searchParams; const filter = sp.filter as ContactMessageRow["status"] | undefined; const messages = await listMessages(filter || undefined); return (
{FILTERS.map((f) => { const active = (filter ?? "") === f.value; return ( {f.label} ); })}
{messages.length === 0 && (
Bu filtrede mesaj yok.
)} {messages.map((m) => (

{m.name}

{m.email} {m.phone && ( {m.phone} )} {new Date(m.$createdAt).toLocaleString("tr-TR")}
{m.subject && (

{m.subject}

)}

{m.message}

))}
); } function StatusBadge({ status }: { status?: string | null }) { const map: Record = { new: { label: "Yeni", cls: "bg-red-100 text-red-800" }, read: { label: "Okundu", cls: "bg-amber-100 text-amber-800" }, replied: { label: "Yanıtlandı", cls: "bg-green-100 text-green-800" }, archived: { label: "Arşiv", cls: "bg-gray-100 text-gray-700" }, }; const meta = map[status ?? "new"] ?? map.new; return ( {meta.label} ); }