diff --git a/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte b/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte index 58b7829..d0e401d 100644 --- a/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte +++ b/frontend-v2/src/lib/pages/brain/AtelierBrainPage.svelte @@ -443,8 +443,84 @@ - -{#if selectedItem} + +{#if selectedItem && (selectedItem.type === 'pdf' || selectedItem.type === 'image')} + +
{ if (e.key === 'Escape') selectedItem = null; }}> +
+ +
+ {#if selectedItem.type === 'pdf'} + {@const pdfAsset = selectedItem.assets?.find(a => a.asset_type === 'original_upload')} + {#if pdfAsset} + + {/if} + {:else if selectedItem.type === 'image'} + {@const imgAsset = selectedItem.assets?.find(a => a.asset_type === 'original_upload')} + {#if imgAsset} +
+ {selectedItem.title +
+ {/if} + {/if} +
+ + +
+
+
+
{selectedItem.type === 'pdf' ? 'PDF Document' : 'Image'}
+

{selectedItem.title || 'Untitled'}

+
+ +
+ + {#if selectedItem.summary} +
{selectedItem.summary}
+ {/if} + + {#if selectedItem.tags && selectedItem.tags.length > 0} +
+ {#each selectedItem.tags as tag} + + {/each} +
+ {/if} + +
+ {#if selectedItem.folder}{selectedItem.folder}{/if} + {formatDate(selectedItem.created_at)} + {#if selectedItem.metadata_json?.page_count} + {selectedItem.metadata_json.page_count} page{selectedItem.metadata_json.page_count !== 1 ? 's' : ''} + {/if} +
+ + {#if selectedItem.extracted_text} +
+
Extracted text
+
{selectedItem.extracted_text.slice(0, 1000)}{selectedItem.extracted_text.length > 1000 ? '...' : ''}
+
+ {/if} + +
+ {#if selectedItem.assets?.some(a => a.asset_type === 'original_upload')} + Download + {/if} + + +
+
+
+
+ + +{:else if selectedItem}
{ if (e.target === e.currentTarget) selectedItem = null; }} onkeydown={(e) => { if (e.key === 'Escape') selectedItem = null; }}>
@@ -458,28 +534,10 @@
- {#if selectedItem.type === 'link' && selectedItem.assets?.some(a => a.asset_type === 'screenshot')} - {:else if selectedItem.type === 'pdf'} - {@const pdfAsset = selectedItem.assets?.find(a => a.asset_type === 'original_upload')} - {#if pdfAsset} - - {:else if selectedItem.assets?.some(a => a.asset_type === 'screenshot')} -
- -
- {/if} - {:else if selectedItem.type === 'image' && selectedItem.assets?.some(a => a.asset_type === 'original_upload')} - {@const imgAsset = selectedItem.assets.find(a => a.asset_type === 'original_upload')} -
- -
{/if} {#if selectedItem.url} @@ -490,15 +548,6 @@
{selectedItem.summary}
{/if} - - {#if selectedItem.extracted_text && selectedItem.type !== 'note' && selectedItem.type !== 'link'} -
-
Extracted text
-
{selectedItem.extracted_text.slice(0, 500)}{selectedItem.extracted_text.length > 500 ? '...' : ''}
-
- {/if} - - {#if selectedItem.type === 'note'}
{#if editingNote} @@ -856,7 +905,70 @@ .empty-title { font-size: 1.2rem; font-weight: 700; color: #1e1812; margin-bottom: 6px; } .empty-desc { font-size: 0.95rem; color: #6a5d50; } - /* ═══ Detail sheet ═══ */ + /* ═══ Full-screen document viewer ═══ */ + .viewer-overlay { + position: fixed; inset: 0; z-index: 60; + background: rgba(17,13,10,0.92); + animation: fadeIn 200ms ease; + } + @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } + + .viewer-layout { + display: grid; + grid-template-columns: 1fr 340px; + height: 100vh; + } + + .viewer-main { + overflow: auto; + background: #2a2420; + display: flex; + align-items: center; + justify-content: center; + } + + .viewer-iframe { + width: 100%; + height: 100%; + border: none; + background: white; + } + + .viewer-image-wrap { + padding: 24px; + display: flex; + align-items: center; + justify-content: center; + max-height: 100%; + overflow: auto; + } + + .viewer-image { + max-width: 100%; + max-height: 90vh; + object-fit: contain; + border-radius: 8px; + box-shadow: 0 20px 60px rgba(0,0,0,0.4); + } + + .viewer-sidebar { + background: linear-gradient(180deg, #f8f1e8 0%, #f3eadc 100%); + border-left: 1px solid rgba(35,26,17,0.08); + padding: 24px; + overflow-y: auto; + display: flex; + flex-direction: column; + gap: 16px; + } + + .viewer-sidebar-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 12px; + } + + /* ═══ Detail sheet (links/notes) ═══ */ .detail-overlay { position: fixed; inset: 0; background: rgba(17,13,10,0.42); z-index: 60; @@ -996,6 +1108,7 @@ .signal-strip { grid-template-columns: 1fr 1fr; } .masonry { columns: 1; } .detail-sheet { width: 100%; padding: 20px; } - /* detail meta grid removed */ + .viewer-layout { grid-template-columns: 1fr; grid-template-rows: 1fr auto; } + .viewer-sidebar { max-height: 40vh; border-left: none; border-top: 1px solid rgba(35,26,17,0.08); } }