import { auth } from "@/auth"; import { getDomains } from "@/lib/mailcow"; import { canAccessDomain } from "@/lib/users"; import { formatBytes } from "@/lib/format"; import { getDictionary, Locale } from "@/app/dictionaries"; export default async function DashboardPage( props: { params: Promise<{ lang: string }>; } ) { const params = await props.params; const session = await auth(); const role = session?.user?.role; const userDomains = session?.user?.domains ?? []; const lang = params.lang as Locale; const dict = await getDictionary(lang); const allDomains = await getDomains(); const visibleDomains = allDomains.filter((d) => canAccessDomain(userDomains, d.domain_name)); const totalMailboxes = visibleDomains.reduce((sum, d) => sum + d.mboxes_in_domain, 0); const totalAliases = visibleDomains.reduce((sum, d) => sum + d.aliases_in_domain, 0); return ( <>

{dict.dashboard.title || "Dashboard"}

{dict.dashboard.welcome || "Hoş geldiniz"}, {session?.user?.name} 👋

} /> } /> } /> {role === "SUPER_ADMIN" && ( } /> )}
{/* Domain durum tablosu */} {visibleDomains.length > 0 && (

{dict.dashboard.domainStatus || "Domain Durumu"}

{visibleDomains.map((d) => { const quotaUsed = Number(d.quota_used_in_domain); const quotaTotal = d.max_quota_for_domain; const pct = quotaTotal > 0 ? Math.min((quotaUsed / quotaTotal) * 100, 100) : 0; return ( ); })}
{dict.dashboard.domain || "Domain"} {dict.dashboard.mailboxes || "Mail Kutuları"} {dict.dashboard.quotaUsage || "Kota Kullanımı"} {dict.dashboard.status || "Durum"}
{d.domain_name}
{d.mboxes_in_domain} / {d.max_num_mboxes_for_domain}
{formatBytes(quotaUsed)} / {formatBytes(quotaTotal)}
80 ? "danger" : ""}`} style={{ width: `${pct}%` }} />
{Math.round(pct)}%
{String(d.active) === "1" ? `● ${dict.dashboard.active || "Aktif"}` : `● ${dict.dashboard.inactive || "Pasif"}`}
)} {/* Quick actions */}

{dict.dashboard.quickActions || "Hızlı İşlemler"}

{role === "SUPER_ADMIN" && ( } title={dict.dashboard.manageDomains || "Domain Yönetimi"} desc={dict.dashboard.manageDomainsDesc || "Domain ekle, sil, yönet"} color="var(--accent)" /> )} } title={dict.dashboard.manageMailboxes || "Mail Hesapları"} desc={dict.dashboard.manageMailboxesDesc || "Yeni hesap oluştur, şifre değiştir, sil"} color="var(--success)" /> {role === "SUPER_ADMIN" && ( } title={dict.dashboard.manageUsers || "Kullanıcılar"} desc={dict.dashboard.manageUsersDesc || ".env'den tanımlı panel kullanıcılarını görüntüle"} color="var(--warning)" /> )}
); } function StatCard({ label, value, sub, color, icon }: { label: string; value: number | string; sub?: string; color: string; icon: React.ReactNode; }) { return (
{icon}
{label}
{value}
{sub &&
{sub}
}
); } function QuickItem({ href, icon, title, desc, color }: { href: string; icon: React.ReactNode; title: string; desc: string; color: string; }) { return (
{icon}
{title}
{desc}
); } // Icons function GlobeIcon() { return ; } function MailIcon() { return ; } function AtIcon() { return ; } function UsersIcon() { return ; }