"use client"; import type { DeadlineReport } from "@/lib/types"; import Link from "next/link"; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend, } from "recharts"; import { CheckCircle, XCircle, Clock, AlertTriangle } from "lucide-react"; function formatMonth(period: string): string { const [year, month] = period.split("-"); const months = [ "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez", ]; return `${months[parseInt(month, 10) - 1]} ${year.slice(2)}`; } function formatDate(dateStr: string): string { const d = new Date(dateStr); return d.toLocaleDateString("de-DE", { day: "2-digit", month: "2-digit", year: "numeric", }); } export function DeadlinesTab({ data }: { data: DeadlineReport }) { const chartData = data.monthly.map((m) => ({ ...m, name: formatMonth(m.period), compliance_rate: Math.round(m.compliance_rate * 10) / 10, })); const complianceColor = data.total.compliance_rate >= 90 ? "text-emerald-600" : data.total.compliance_rate >= 70 ? "text-amber-600" : "text-red-600"; return (
{data.total.total}
{data.total.met}
{data.total.missed}
{data.total.compliance_rate.toFixed(1)}%
Keine Daten im gewählten Zeitraum
) : (Keine versäumten Fristen im gewählten Zeitraum
| Frist | Akte | Fällig am | Tage überfällig |
|---|---|---|---|
| {d.title} | {d.case_number} — {d.case_title} | {formatDate(d.due_date)} |
|