'use client'; import { useState, useEffect } from 'react'; import { X } from 'lucide-react'; import { apiUrl } from '@/lib/constants'; import { appendTokenToUrl, withAdminTokenHeader } from '@/lib/adminAuth'; interface FilePreviewProps { fileId: string; filename: string; mimetype: string; roomCode: string; onClose: () => void; } export default function FilePreview({ fileId, filename, mimetype, roomCode, onClose }: FilePreviewProps) { const [loading, setLoading] = useState(true); const fileUrl = appendTokenToUrl(`${apiUrl}/clipboard/${roomCode}/files/${fileId}`); // Handle escape key to close preview useEffect(() => { const handleEsc = (event: KeyboardEvent) => { if (event.key === 'Escape') { onClose(); } }; window.addEventListener('keydown', handleEsc); return () => { window.removeEventListener('keydown', handleEsc); }; }, [onClose]); const renderPreview = () => { if (mimetype.startsWith('image/')) { return (