import React, { useState } from 'react';
import {
History,
GitCommit,
CheckCircle2,
AlertCircle,
FileText,
Clock,
ShieldCheck,
ChevronDown
} from 'lucide-react';
export default function AuditLog({ activityFeed, loading }) {
const [filterType, setFilterType] = useState('ALL');
if (loading) {
return (
Loading Git Audit Trail...
);
}
const events = activityFeed || [];
const filtered = events.filter((e) => {
if (filterType === 'ALL') return true;
return e.type === filterType;
});
const getEventBadge = (type) => {
switch (type) {
case 'proposal_approved':
return {
color: 'bg-emerald-500/10 text-emerald-400 border-emerald-500/20',
label: 'COMMITTED',
};
case 'proposal_created':
return {
color: 'bg-amber-500/10 text-amber-300 border-amber-500/20',
label: 'PROPOSED',
};
case 'workflow_completed':
return {
color: 'bg-blue-500/10 text-blue-300 border-blue-500/20',
label: 'WORKFLOW',
};
default:
return {
color: 'bg-slate-800 text-slate-300 border-slate-700',
label: 'ACTIVITY',
};
}
};
return (
{/* Audit Log Header */}
Immutable Git Audit Log
Cryptographically verifiable lineage of knowledge commits, reviews, and workflows.
{['ALL', 'proposal_approved', 'proposal_created', 'workflow_completed'].map((f) => (
))}
{/* Visual Commit History Timeline */}
{filtered.length === 0 ? (
No audit records found matching criteria.
) : (
{filtered.map((evt, idx) => {
const badge = getEventBadge(evt.type);
const dateStr = evt.timestamp ? new Date(evt.timestamp).toLocaleString() : 'Recent';
const sha = (evt.id || 'commit').slice(-7);
return (
{/* Timeline Dot */}
{sha}
{badge.label}
Verified
{dateStr}
{evt.message}
{evt.metadata && (
Metadata: {JSON.stringify(evt.metadata)}
)}
);
})}
)}
);
}