/** * Approval History Page * * Full-page view for compliance reporting with advanced filters, * date range selection, and export functionality. */ import { useState } from 'react'; import { ItemApprovalHistory } from '@/components/moderation/ItemApprovalHistory'; import { FilterDateRangePicker } from '@/components/filters/FilterDateRangePicker'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Label } from '@/components/ui/label'; import { Card, CardContent } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { X, FileCheck } from 'lucide-react'; import { useUserRole } from '@/hooks/useUserRole'; import { Navigate } from 'react-router-dom'; import type { EntityType } from '@/types/submissions'; export default function ApprovalHistory() { const { isModerator, loading: rolesLoading } = useUserRole(); const [fromDate, setFromDate] = useState(null); const [toDate, setToDate] = useState(null); const [itemType, setItemType] = useState('all'); const [limit, setLimit] = useState(100); // Access control: moderators only if (rolesLoading) { return (
Loading...
); } if (!isModerator()) { return ; } const hasFilters = fromDate || toDate || itemType !== 'all' || limit !== 100; const clearFilters = () => { setFromDate(null); setToDate(null); setItemType('all'); setLimit(100); }; return (
{/* Header */}

Approval History

Complete audit trail of all approved items with exact timestamps for compliance reporting

{/* Filters */}
{/* Date Range Filter */}
setFromDate(date || null)} onToChange={(date) => setToDate(date || null)} fromPlaceholder="Start Date" toPlaceholder="End Date" />
{/* Item Type Filter */}
{/* Results Limit */}
{/* Clear Filters */} {hasFilters && (
)}
{/* History Table */}
); }