"use client"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { useParams, useRouter } from "next/navigation"; import { api } from "@/lib/api"; import type { Deadline } from "@/lib/types"; import { Breadcrumb } from "@/components/layout/Breadcrumb"; import { NotesList } from "@/components/notes/NotesList"; import { Skeleton } from "@/components/ui/Skeleton"; import { format, parseISO, formatDistanceToNow, isPast } from "date-fns"; import { de } from "date-fns/locale"; import { AlertTriangle, CheckCircle2, Clock, ExternalLink, } from "lucide-react"; import Link from "next/link"; import { toast } from "sonner"; interface DeadlineDetail extends Deadline { case_number?: string; case_title?: string; } const STATUS_CONFIG: Record< string, { label: string; bg: string; icon: typeof Clock } > = { pending: { label: "Offen", bg: "bg-amber-50 text-amber-700", icon: Clock }, completed: { label: "Erledigt", bg: "bg-emerald-50 text-emerald-700", icon: CheckCircle2, }, overdue: { label: "Ueberfaellig", bg: "bg-red-50 text-red-700", icon: AlertTriangle, }, }; function getEffectiveStatus(d: DeadlineDetail): string { if (d.status === "completed") return "completed"; if (isPast(parseISO(d.due_date))) return "overdue"; return "pending"; } function DetailSkeleton() { return (
Frist nicht gefunden
Die Frist existiert nicht oder Sie haben keine Berechtigung.
Zurueck zu Fristen{deadline.description}
)}Warnung am:{" "} {format(parseISO(deadline.warning_date), "d. MMMM yyyy", { locale: de, })}
)} {deadline.original_due_date && deadline.original_due_date !== deadline.due_date && (Urspruengliches Datum:{" "} {format(parseISO(deadline.original_due_date), "d. MMMM yyyy", { locale: de, })}
)} {deadline.completed_at && (Erledigt am:{" "} {format(parseISO(deadline.completed_at), "d. MMMM yyyy, HH:mm", { locale: de, })}
)}Akte
{deadline.case_number ? `Az. ${deadline.case_number}` : "Verknuepfte Akte"} {deadline.case_title && ` — ${deadline.case_title}`}
Quelle
{deadline.source === "calculated" ? "Berechnet" : deadline.source === "caldav" ? "CalDAV Sync" : deadline.source} {deadline.rule_id && ` (Regel: ${deadline.rule_id})`}