"use client"; import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { ChevronLeft, ChevronRight, RefreshCw } from "lucide-react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/Card"; import { Table, TableHead, TableBody, TableRow, Th, Td, EmptyState } from "@/components/ui/Table"; import { Badge } from "@/components/ui/Badge"; import { Button } from "@/components/ui/Button"; import { formatDateTime } from "@/lib/utils"; import api from "@/lib/api"; import type { AuditLog, PaginatedResponse } from "@/types"; export default function AuditLogPage() { const [page, setPage] = useState(1); const { data, isLoading, refetch } = useQuery>({ queryKey: ["audit-logs", page], queryFn: async () => { const res = await api.get>(`/api/v1/audit-logs?page=${page}&limit=50`); return res.data; }, }); const logs = data?.data ?? []; const meta = data?.meta; return (

Audit Log

Track all system activity

Activity Log {isLoading ? ( Array.from({ length: 5 }).map((_, i) => ( {Array.from({ length: 5 }).map((_, j) => ( ))} )) ) : logs.length === 0 ? ( ) : ( logs.map((log) => ( )) )}
Timestamp User Action Entity Entity ID
{formatDateTime(log.createdAt)} {log.user ? `${log.user.firstName} ${log.user.lastName}` : log.userId?.slice(0, 8) ?? "System"} {log.action} {log.entityType ?? log.entity ?? "—"} {log.entityId?.slice(0, 12) ?? "—"}
{meta && meta.totalPages > 1 && (

Page {meta.page} of {meta.totalPages}

)}
); }