import { Eye, Paperclip } from 'lucide-react'; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/tooltip'; 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; variant?: 'link' | 'icon'; }; export function AttachmentPreviewDialog({ fileUrl, fileName, className, variant = 'link', }: 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 ( <> {variant === 'icon' ? ( setOpen(true)} > Lihat ) : ( 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.