"use client"; import Link from "next/link"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { FileText, Upload, Calculator, CheckCircle, Send, Clock, } from "lucide-react"; import { formatDate } from "@/lib/formatting"; // Mock data - in real app this would come from API const mockActivity = [ { id: "1", type: "document_uploaded", title: "P60 uploaded for John Smith", description: "Employment certificate for 2023-24", clientId: "client-1", clientName: "John Smith", userId: "user-1", userName: "Sarah Wilson", timestamp: "2024-01-10T14:30:00Z", status: "completed", }, { id: "2", type: "schedule_computed", title: "SA103 calculated for Sarah Johnson", description: "Self-employment schedule completed", clientId: "client-2", clientName: "Sarah Johnson", userId: "user-2", userName: "Mike Davis", timestamp: "2024-01-10T13:15:00Z", status: "completed", }, { id: "3", type: "coverage_checked", title: "Coverage check completed", description: "2 missing items identified for Michael Brown", clientId: "client-3", clientName: "Michael Brown", userId: "user-1", userName: "Sarah Wilson", timestamp: "2024-01-10T11:45:00Z", status: "attention_required", }, { id: "4", type: "form_generated", title: "SA100 form generated", description: "Main return PDF created for Emma Davis", clientId: "client-4", clientName: "Emma Davis", userId: "user-3", userName: "Alex Thompson", timestamp: "2024-01-10T10:20:00Z", status: "completed", }, { id: "5", type: "submission_prepared", title: "HMRC submission ready", description: "Return prepared for David Wilson", clientId: "client-5", clientName: "David Wilson", userId: "user-2", userName: "Mike Davis", timestamp: "2024-01-10T09:30:00Z", status: "pending_review", }, ]; const activityIcons = { document_uploaded: Upload, schedule_computed: Calculator, coverage_checked: CheckCircle, form_generated: FileText, submission_prepared: Send, default: Clock, }; const statusColors = { completed: "bg-green-100 text-green-800", attention_required: "bg-yellow-100 text-yellow-800", pending_review: "bg-blue-100 text-blue-800", failed: "bg-red-100 text-red-800", }; export function RecentActivity(): JSX.Element { return ( Recent Activity Last 24 hours
{mockActivity.map((activity) => { const Icon = activityIcons[activity.type as keyof typeof activityIcons] || activityIcons.default; return (

{activity.title}

{activity.status.replace("_", " ")}

{activity.description}

{activity.userName .split(" ") .map((n) => n[0]) .join("")} {activity.userName}
{formatDate(activity.timestamp, { relative: true })}
View Client
); })} {mockActivity.length === 0 && (

No recent activity

Activity will appear here as work is completed

)}
{mockActivity.length > 0 && (
View full audit trail →
)}
); }