diff --git a/src/review.rs b/src/review.rs index ac3f6f2..c73f3f3 100644 --- a/src/review.rs +++ b/src/review.rs @@ -190,9 +190,14 @@ h1 { text-align: center; margin-bottom: 20px; color: #e94560; } .status { text-align: center; margin-top: 16px; font-size: 1.1em; color: #e94560; } .deleted { opacity: 0.3; pointer-events: none; } .ignored { opacity: 0.2; pointer-events: none; } +.lightbox { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.92); z-index: 1000; justify-content: center; align-items: center; cursor: zoom-out; } +.lightbox.active { display: flex; } +.lightbox img { max-width: 95vw; max-height: 95vh; object-fit: contain; border-radius: 8px; } +.lightbox .lb-path { position: absolute; bottom: 16px; left: 50%; transform: translateX(-50%); color: #aaa; font-size: 0.85em; background: rgba(0,0,0,0.7); padding: 6px 16px; border-radius: 8px; max-width: 90vw; text-align: center; word-break: break-all; } +

🔍 deduper — Review Duplicates

"#); @@ -235,7 +240,7 @@ h1 { text-align: center; margin-bottom: 20px; color: #e94560; } html.push_str(&format!( r#"
-{display_path} +{display_path}
{display_path}
{size}
@@ -314,6 +319,16 @@ async function shutdown() { try { await fetch('/shutdown', {method: 'POST'}); } catch(e) {} document.getElementById('status').textContent = 'Review complete. You can close this tab.'; } + +function openLightbox(src, path) { + document.getElementById('lb-img').src = src; + document.getElementById('lb-path').textContent = path; + document.getElementById('lightbox').classList.add('active'); +} +function closeLightbox() { + document.getElementById('lightbox').classList.remove('active'); +} +document.addEventListener('keydown', e => { if (e.key === 'Escape') closeLightbox(); });