39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
|
|
import { Suspense } from "react";
|
||
|
|
import { AuditLogTable } from "@/components/admin/audit/audit-log-table";
|
||
|
|
import { Skeleton } from "@/components/ui/skeleton";
|
||
|
|
|
||
|
|
export default function AuditLogPage() {
|
||
|
|
return (
|
||
|
|
<div className="container mx-auto py-8 px-4">
|
||
|
|
<div className="mb-8">
|
||
|
|
<h1 className="text-3xl font-bold">Audit Log</h1>
|
||
|
|
<p className="text-muted-foreground mt-2">
|
||
|
|
View system activity and security events
|
||
|
|
</p>
|
||
|
|
</div>
|
||
|
|
<Suspense fallback={<AuditLogSkeleton />}>
|
||
|
|
<AuditLogTable />
|
||
|
|
</Suspense>
|
||
|
|
</div>
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
function AuditLogSkeleton() {
|
||
|
|
return (
|
||
|
|
<div className="space-y-4">
|
||
|
|
<div className="flex gap-4">
|
||
|
|
<Skeleton className="h-10 w-[200px]" />
|
||
|
|
<Skeleton className="h-10 w-[200px]" />
|
||
|
|
<Skeleton className="h-10 w-[200px]" />
|
||
|
|
</div>
|
||
|
|
<div className="rounded-md border">
|
||
|
|
<div className="p-4 space-y-4">
|
||
|
|
{[...Array(10)].map((_, i) => (
|
||
|
|
<Skeleton key={i} className="h-12 w-full" />
|
||
|
|
))}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
);
|
||
|
|
}
|