diff --git a/frontend/src/detail/DetailPanel.jsx b/frontend/src/detail/DetailPanel.jsx
index 3927533..062b8d8 100644
--- a/frontend/src/detail/DetailPanel.jsx
+++ b/frontend/src/detail/DetailPanel.jsx
@@ -49,6 +49,7 @@ const PreviewStack = ({
items = [],
maxItems = MAX_PREVIEW_STACK_ITEMS,
emptyMessage = 'Preview unavailable',
+ emptyContent = null,
onItemActivate,
onOpenPreview,
onZoomPreview,
@@ -65,7 +66,11 @@ const PreviewStack = ({
);
if (!limited.length) {
- return {emptyMessage};
+ return (
+
+ {emptyContent || {emptyMessage}}
+
+ );
}
return (
@@ -684,6 +689,30 @@ const DetailPanel = ({
const canGoPrev = singlePreviewNavigator.canGoPrev;
const canGoNext = singlePreviewNavigator.canGoNext;
const hasPreviewImage = Boolean(singlePreviewNavigator.currentUrl);
+ const previewMissingAsset = !singleNavigatorAsset;
+ const displayContentType = singleDoc.content_type || 'this file type';
+ const displayFilename =
+ singleDoc.filename || singleDoc.original_name || singleDoc.title || 'download';
+ const previewFallback = previewMissingAsset ? (
+
+
+ Preview not available for {displayContentType} files.
+
+
{displayFilename}
+ {singleDownloadHref ? (
+
+
+ Download
+
+ ) : null}
+
+ ) : null;
+ const emptyMessage = previewMissingAsset ? 'Preview unavailable' : 'Preview loading…';
const interceptNavPointer = (event) => {
event.preventDefault();
event.stopPropagation();
@@ -695,7 +724,8 @@ const DetailPanel = ({