import { Card, CardContent, Badge } from "poyraz-ui/atoms"; import { FolderKanban, CheckCircle2, Clock, Activity, BarChart, type LucideIcon } from "lucide-react"; import Link from "next/link"; import { format } from "date-fns"; import { tr } from "date-fns/locale"; import { requirePortalBackend } from "@/server/web/portal"; export default async function PortalDashboardPage() { const { context, actor, service } = await requirePortalBackend(); const client = service.getClient(actor, context.profile.clientId!); const projects = service.listProjects(actor); const activeProjects = projects.filter((project) => project.status !== "completed" && project.status !== "cancelled"); const completedProjects = projects.filter((project) => project.status === "completed"); const avgProgress = projects.length ? Math.round(projects.reduce((sum, project) => sum + project.progress, 0) / projects.length) : 0; return (
Genel Bakış

Müşteri Paneli

Hoş geldiniz, {client.name}. Aktif projelerinizi ve ilerlemeleri buradan takip edin.

Tüm Projeleriniz

{projects.length === 0 ? (
Henüz size atanmış bir proje bulunmuyor.
) : projects.map((project) => (

{project.name}

{project.status === "completed" ? "Tamamlandı" : project.status === "active" ? "Aktif" : "Beklemede"} {project.dueDate && (
Teslim: {format(new Date(project.dueDate), "d MMM yyyy", { locale: tr })}
)}
İlerleme %{project.progress}
))}
); } function StatCard({ label, value, icon: Icon, tone }: { label: string; value: string; icon: LucideIcon; tone: "green" | "blue" | "amber"; }) { const toneClass = { green: "bg-emerald-50 text-emerald-700", blue: "bg-blue-50 text-blue-700", amber: "bg-amber-50 text-amber-700", }[tone]; return (

{label}

{value}

); }