Files
thrilltrack-explorer/src-old/components/moderation/EmptyQueueState.tsx

54 lines
1.7 KiB
TypeScript

import { CheckCircle, LucideIcon } from 'lucide-react';
import type { EntityFilter, StatusFilter } from '@/types/moderation';
interface EmptyQueueStateProps {
entityFilter: EntityFilter;
statusFilter: StatusFilter;
icon?: LucideIcon;
title?: string;
customMessage?: string;
}
const getEmptyStateMessage = (entityFilter: EntityFilter, statusFilter: StatusFilter): string => {
const entityLabel = entityFilter === 'all' ? 'items' :
entityFilter === 'reviews' ? 'reviews' :
entityFilter === 'photos' ? 'photos' : 'submissions';
switch (statusFilter) {
case 'pending':
return `No pending ${entityLabel} require moderation at this time.`;
case 'partially_approved':
return `No partially approved ${entityLabel} found.`;
case 'flagged':
return `No flagged ${entityLabel} found.`;
case 'approved':
return `No approved ${entityLabel} found.`;
case 'rejected':
return `No rejected ${entityLabel} found.`;
case 'all':
return `No ${entityLabel} found.`;
default:
return `No ${entityLabel} found for the selected filter.`;
}
};
export const EmptyQueueState = ({
entityFilter,
statusFilter,
icon: Icon = CheckCircle,
title = 'No items found',
customMessage
}: EmptyQueueStateProps) => {
const message = customMessage || getEmptyStateMessage(entityFilter, statusFilter);
return (
<div className="text-center py-8">
<Icon className="w-12 h-12 text-muted-foreground mx-auto mb-4" />
<h3 className="text-lg font-semibold mb-2">{title}</h3>
<p className="text-muted-foreground">{message}</p>
</div>
);
};
EmptyQueueState.displayName = 'EmptyQueueState';