'use client' import { useState } from 'react' import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog' import { Button } from '@/components/ui/button' import { Eye, Download, FileText, Image as ImageIcon, Video, File } from 'lucide-react' interface FilePreviewProps { fileName: string mimeType: string downloadUrl: string } function getPreviewType(mimeType: string): 'pdf' | 'image' | 'video' | 'unsupported' { if (mimeType === 'application/pdf') return 'pdf' if (mimeType.startsWith('image/')) return 'image' if (mimeType.startsWith('video/')) return 'video' return 'unsupported' } function getFileIcon(mimeType: string) { if (mimeType === 'application/pdf') return FileText if (mimeType.startsWith('image/')) return ImageIcon if (mimeType.startsWith('video/')) return Video return File } export function FilePreview({ fileName, mimeType, downloadUrl }: FilePreviewProps) { const [open, setOpen] = useState(false) const previewType = getPreviewType(mimeType) const Icon = getFileIcon(mimeType) const canPreview = previewType !== 'unsupported' if (!canPreview) { return ( Download ) } return ( Preview {fileName} {previewType === 'pdf' && ( )} {previewType === 'image' && ( )} {previewType === 'video' && ( Your browser does not support the video tag. )} Download ) }