# Prompt: Înlocuiește sistemul actual de preview documente atașate cu QuickLook-style Preview > Copiază tot conținutul de mai jos și dă-l ca instrucțiune directă modelului AI. --- Înlocuiește complet sistemul actual de previzualizare a documentelor atașate cu un preview fullscreen inspirat de macOS Quick Look. Componentă React standalone, un singur fișier, fără dependențe externe — doar React hooks, lucide-react icons, Tailwind CSS, și un `Button` component din UI library. ## Arhitectură **Un singur component exportat: `AttachmentPreview`** Props: ```typescript interface AttachmentPreviewProps { /** Array cu fișierele previewable (filtrate în prealabil) */ attachments: Attachment[]; /** Indexul inițial de afișat */ initialIndex: number; /** Dacă modal-ul e deschis */ open: boolean; /** Callback la închidere */ onClose: () => void; } interface Attachment { id: string; name: string; data: string; // base64 data URI (data:image/jpeg;base64,... sau data:application/pdf;base64,...) type: string; // MIME type: "image/jpeg", "application/pdf", etc. size: number; // bytes } ``` **Pattern de integrare (în componenta părinte):** ```tsx // Folosește key={previewIndex} ca să forțeze remount-ul la fiecare deschidere nouă. // Asta resetează zoom, pan, currentIndex fără setState în effects. { previewIndex !== null && ( setPreviewIndex(null)} /> ); } ``` **Helper exportat: `getPreviewableAttachments(attachments)`** Filtrează array-ul la atașamentele care pot fi previewate (au `data` non-empty, MIME type = `image/*` sau `application/pdf`). ## Structura UI (3 zone fixe) ### 1. Top Bar (`shrink-0`) - Stânga: icon fișier + filename (truncate) + dimensiune KB + extensie + "N / M" counter (dacă sunt multiple fișiere) - Dreapta: [Zoom− | 100% | Zoom+] (doar pentru imagini) | Print | Download | Close(X) - Separatoare vizuale între grupuri de butoane: `div.w-px.h-5.bg-white/20.mx-1` ### 2. Content Area (`flex-1`) - Container: `fixed inset-0 z-[100]`, `bg-black/90 backdrop-blur-sm` - **Imagini:** `` cu `transform: translate(panX, panY) scale(zoom)`, `transition-transform duration-150`, `draggable={false}`, `select-none` - **PDF-uri:** `