import { Grid, Paper, Box, Image, Text, Loader, Stack, Center } from '@mantine/core'; export interface ResultFile { file: File; thumbnail?: string; } export interface ResultsPreviewProps { files: ResultFile[]; isGeneratingThumbnails?: boolean; onFileClick?: (file: File) => void; title?: string; emptyMessage?: string; loadingMessage?: string; } const ResultsPreview = ({ files, isGeneratingThumbnails = false, onFileClick, title, emptyMessage = "No files to preview", loadingMessage = "Generating previews..." }: ResultsPreviewProps) => { const formatSize = (size: number) => { if (size > 1024 * 1024) return `${(size / (1024 * 1024)).toFixed(1)} MB`; if (size > 1024) return `${(size / 1024).toFixed(1)} KB`; return `${size} B`; }; if (files.length === 0 && !isGeneratingThumbnails) { return ( {emptyMessage} ); } return ( {title && ( {title} ({files.length} files) )} {isGeneratingThumbnails ? (
{loadingMessage}
) : ( {files.map((result, index) => ( onFileClick?.(result.file)} style={{ textAlign: 'center', height: '10rem', width:'5rem', display: 'flex', flexDirection: 'column', cursor: onFileClick ? 'pointer' : 'default', transition: 'all 0.2s ease' }} > {result.thumbnail ? ( {`Preview ) : ( No preview )} {result.file.name} {formatSize(result.file.size)} ))} )}
); } export default ResultsPreview;