From 1babe131b5fcea12c72f08f453f55cc2a1130c3d Mon Sep 17 00:00:00 2001 From: brooktewabe Date: Sat, 13 Jun 2026 20:29:50 +0300 Subject: [PATCH] ts issue --- src/pages/admin/audit/index.tsx | 158 +++++++++++++++++++++----------- 1 file changed, 103 insertions(+), 55 deletions(-) diff --git a/src/pages/admin/audit/index.tsx b/src/pages/admin/audit/index.tsx index b352613..12a8c63 100644 --- a/src/pages/admin/audit/index.tsx +++ b/src/pages/admin/audit/index.tsx @@ -7,37 +7,54 @@ import { Search, ChevronLeft, ChevronRight, - Filter, Terminal, } from "lucide-react"; import { auditService, type AuditLog } from "@/services"; import { format } from "date-fns"; import { cn } from "@/lib/utils"; -export default function AuditPage() { +export default function ActivityLogPage() { const [page, setPage] = useState(1); const [limit] = useState(15); const [search, setSearch] = useState(""); + const [filter, setFilter] = useState<"action" | "userId">("action"); const { data: auditData, isLoading } = useQuery({ - queryKey: ["admin", "audit", "logs", page, limit, search], + queryKey: ["activity-log", page, limit, search, filter], queryFn: async () => { - const params: Record = { page, limit }; - if (search) params.search = search; - return await auditService.getAuditLogs(params); + const params: Record = { + page, + limit, + }; + + if (search.trim()) { + params.search = search.trim(); + params.filter = filter; + } + + return auditService.getAuditLogs(params); }, }); const getActionColor = (action: string) => { const act = action.toUpperCase(); - if (act.includes("CREATE")) + + if (act.includes("CREATE")) { return "text-blue-600 bg-blue-50 border-blue-100"; - if (act.includes("UPDATE")) + } + + if (act.includes("UPDATE")) { return "text-emerald-600 bg-emerald-50 border-emerald-100"; - if (act.includes("DELETE")) + } + + if (act.includes("DELETE")) { return "text-rose-600 bg-rose-50 border-rose-100"; - if (act.includes("LOGIN")) + } + + if (act.includes("LOGIN")) { return "text-purple-600 bg-purple-50 border-purple-100"; + } + return "text-slate-600 bg-slate-50 border-slate-100"; }; @@ -46,78 +63,88 @@ export default function AuditPage() {

- Audit Logs + Activity Log

+

- Comprehensive system transaction registry. + Audit trail of all administrative actions.

-
- {/* View only access: No administrative actions */} -
- Security Ledger + System Audit +
-
+ + +
+ setSearch(e.target.value)} + onChange={(e) => { + setPage(1); + setSearch(e.target.value); + }} />
-
+
+ + - + + {isLoading ? ( - ) : auditData?.data && auditData.data.length > 0 ? ( + ) : auditData?.data?.length ? ( auditData.data.map((log: AuditLog) => ( - - - - )) ) : ( )} @@ -158,27 +202,31 @@ export default function AuditPage() {
- Act + Action - User ID + User - Resource - - IP + Detail - Date + Timestamp
- Retrieving audit trail... + Synchronizing audit records...
- {log.userId || "--"} + + +
+

+ {log.user + ? `${log.user.firstName ?? ""} ${ + log.user.lastName ?? "" + }`.trim() || "Unknown User" + : "SYSTEM"} +

+ +

+ {log.user?.email ?? log.userId} +

+
- {log.resourceType}:{" "} - {log.resourceId.substring(0, 10)} + + +
+ + {log.detail} +
- {log.ipAddress || "--"} - - {format(new Date(log.timestamp), "MMM dd, HH:mm")} + + + {format( + new Date(log.createdAt), + "MMM dd, yyyy HH:mm:ss", + )}
- Security ledger is clear. + No activity logs recorded.
- {auditData && ( + + {auditData?.meta && auditData.meta.totalPages > 1 && (

- Standard View: {auditData.total || 0} Entries + Page {auditData.meta.page} of {auditData.meta.totalPages} ( + {auditData.meta.total} records)

+
+ @@ -188,4 +236,4 @@ export default function AuditPage() {
); -} +} \ No newline at end of file