import { Paperclip } from 'lucide-react'; import { useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { cn } from '@/lib/utils'; const IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'webp']; const VIDEO_EXTENSIONS = ['mp4', 'webm']; function fileExtension(fileName: string): string { return fileName.split('.').pop()?.toLowerCase() ?? ''; } type AttachmentPreviewDialogProps = { fileUrl: string; fileName: string; className?: string; }; export function AttachmentPreviewDialog({ fileUrl, fileName, className, }: AttachmentPreviewDialogProps) { const [open, setOpen] = useState(false); const extension = fileExtension(fileName); const isImage = IMAGE_EXTENSIONS.includes(extension); const isVideo = VIDEO_EXTENSIONS.includes(extension); const isPdf = extension === 'pdf'; return ( <> setOpen(true)} className={cn( 'inline-flex items-center gap-1 text-primary underline underline-offset-4 hover:text-primary/80', className, )} > {fileName} {fileName} {isImage && ( )} {isVideo && ( )} {isPdf && ( )} {!isImage && !isVideo && !isPdf && ( Pratinjau tidak tersedia untuk file ini. Buka / unduh file )} > ); }
Pratinjau tidak tersedia untuk file ini.