import Link from "next/link"; import { ArrowRight } from "lucide-react"; import { Query } from "appwrite"; import { DATABASE_ID, TABLES, userDB } from "@/lib/appwrite-server"; import { requireSessionSecret } from "@/lib/auth"; async function safeCount(tableId: string, queries: string[] = []) { try { const secret = await requireSessionSecret(); const res = await userDB(secret).listRows({ databaseId: DATABASE_ID, tableId, queries: [...queries, Query.limit(1)], }); return res.total ?? 0; } catch { return 0; } } export default async function AdminDashboard() { const [posts, drafts, services, projects, testimonials, newMessages, totalMessages] = await Promise.all([ safeCount(TABLES.blogPosts, [Query.equal("status", "published")]), safeCount(TABLES.blogPosts, [Query.equal("status", "draft")]), safeCount(TABLES.services), safeCount(TABLES.projects), safeCount(TABLES.testimonials), safeCount(TABLES.contactMessages, [Query.equal("status", "new")]), safeCount(TABLES.contactMessages), ]); const cards = [ { label: "Yayında blog", value: posts, href: "/admin/blog", accent: "navy" }, { label: "Taslak blog", value: drafts, href: "/admin/blog", accent: "amber" }, { label: "Hizmet", value: services, href: "/admin/hizmetler", accent: "navy" }, { label: "Proje", value: projects, href: "/admin/projeler", accent: "navy" }, { label: "Referans", value: testimonials, href: "/admin/referanslar", accent: "navy" }, { label: "Yeni mesaj", value: newMessages, href: "/admin/iletisim?filter=new", accent: "red" }, { label: "Toplam mesaj", value: totalMessages, href: "/admin/iletisim", accent: "navy" }, ]; return (

Pano

Site içeriklerini buradan yönetin.

{cards.map((c) => (

{c.label}

{c.value}

))}
); } function QuickActions() { const actions = [ { href: "/admin/blog/new", label: "Yeni blog yazısı" }, { href: "/admin/projeler/new", label: "Yeni proje ekle" }, { href: "/admin/referanslar/new", label: "Yeni referans" }, { href: "/admin/seo", label: "SEO ayarları" }, ]; return (

Hızlı aksiyonlar

); } function RecentLinks() { return (

Kısayollar

); }