"use client"; import { useState, useEffect } from "react"; import { Card } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Badge } from "@/components/ui/badge"; import { formatDistanceToNow } from "date-fns"; import { AuditLog } from "@/types/admin"; import { adminApi } from "@/lib/api/admin"; import { Loader2 } from "lucide-react"; export default function AuditLogsPage() { const [logs, setLogs] = useState([]); const [loading, setLoading] = useState(true); // eslint-disable-next-line @typescript-eslint/no-unused-vars const [filters, setFilters] = useState({ user: "", action: "", entity: "", }); useEffect(() => { const fetchLogs = async () => { setLoading(true); try { const data = await adminApi.getAuditLogs(); setLogs(data); } catch (error) { console.error("Failed to fetch audit logs", error); } finally { setLoading(false); } }; fetchLogs(); }, []); return (

Audit Logs

View system activity and changes

{/* Filters */}
{/* Logs List */} {loading ? (
) : (
{logs.map((log) => (
{log.user_name} {log.action} {log.entity_type}

{log.description}

{formatDistanceToNow(new Date(log.created_at), { addSuffix: true, })}

{log.ip_address && ( IP: {log.ip_address} )}
))}
)}
); }