From 4d30e47ee89831b231bfac4f4f77ac078b882e3e Mon Sep 17 00:00:00 2001 From: Nils Schneider Date: Tue, 25 Nov 2025 00:40:35 +0100 Subject: [PATCH] fix --- frontend/src/app/DocumentsRoute.tsx | 3 ++- frontend/src/app/useWorkspaceSurface.tsx | 9 +++++++-- frontend/src/preview/DocumentViewerPanel.tsx | 7 ++++++- frontend/src/styles/detail/detail-panels.css | 10 ++++++++++ frontend/src/styles/documents/listing.css | 5 +++++ frontend/src/styles/layout/structure.css | 2 +- 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/DocumentsRoute.tsx b/frontend/src/app/DocumentsRoute.tsx index dbf9eaf..70ba486 100644 --- a/frontend/src/app/DocumentsRoute.tsx +++ b/frontend/src/app/DocumentsRoute.tsx @@ -55,7 +55,8 @@ const DocumentsRouteContent: React.FC = () => { }, []); const renderSurface = () => { - const layoutClass = `documents-main${sidebarHidden ? ' documents-main--sidebar-hidden' : ''}`; + const detailMode = surface?.detailMode ?? null; + const layoutClass = `documents-main${sidebarHidden ? ' documents-main--sidebar-hidden' : ''}${detailMode === 'overlay' ? ' documents-main--overlay-detail' : ''}`; const sidebarNode = !sidebarHidden && sidebarProps ? : null; const surfaceDetail = surface && (surface as { detail?: ReactNode }).detail ? (surface as { detail?: ReactNode }).detail : null; const surfaceBody = surface ? surface.content : null; diff --git a/frontend/src/app/useWorkspaceSurface.tsx b/frontend/src/app/useWorkspaceSurface.tsx index d13f899..0c5fa38 100644 --- a/frontend/src/app/useWorkspaceSurface.tsx +++ b/frontend/src/app/useWorkspaceSurface.tsx @@ -27,7 +27,7 @@ export type DetailPanelProps = (ComponentProps & { ) => Promise; }) | null; -export type WorkspaceSurface = { content: ReactNode; detail?: ReactNode | null } | null; +export type WorkspaceSurface = { content: ReactNode; detail?: ReactNode | null; detailMode?: 'overlay' | 'inline' | null } | null; export interface UseWorkspaceSurfaceArgs { sidebarHidden?: boolean; @@ -100,7 +100,10 @@ export const useWorkspaceSurface = ({ } const sidebarToggle = renderSidebarToggle ? renderSidebarToggle() : null; + const viewMode = documentsTableProps.viewMode; + const sidebarMode = viewMode === 'desk' ? 'overlay' : 'inline'; + const detailMode: 'overlay' | 'inline' | null = detailPanelOpen && detailPanelProps ? sidebarMode : null; const detail = detailPanelOpen && detailPanelProps ? (() => { const { @@ -114,6 +117,7 @@ export const useWorkspaceSurface = ({ const viewer = ( ), detail, + detailMode, }; }, [ documentsTableProps, @@ -205,7 +210,7 @@ export const useWorkspaceSurface = ({ ) : viewer; - return { content, detail: null }; + return { content, detail: null, detailMode: null }; }, [ showPreviewWorkspace, previewWorkspaceDocument, diff --git a/frontend/src/preview/DocumentViewerPanel.tsx b/frontend/src/preview/DocumentViewerPanel.tsx index 287e8df..ad1c477 100644 --- a/frontend/src/preview/DocumentViewerPanel.tsx +++ b/frontend/src/preview/DocumentViewerPanel.tsx @@ -58,6 +58,8 @@ interface AssetLike { [key: string]: unknown; } +type SidebarMode = 'overlay' | 'inline'; + interface DocumentViewerPanelProps extends DocumentSummarySectionProps { document: DocumentLike | null; ensureAssetUrl?: (docId: DocumentId, asset: AssetLike, options?: { force?: boolean }) => Promise; @@ -70,6 +72,7 @@ interface DocumentViewerPanelProps extends DocumentSummarySectionProps { variant?: 'viewer' | 'sidebar'; onCollapsePanel?: () => void; onMaximizePanel?: (args: { documentIds: Array }) => void; + sidebarMode?: SidebarMode; } @@ -138,6 +141,7 @@ const DocumentViewerPanel: React.FC = ({ variant = 'viewer', onCollapsePanel, onMaximizePanel, + sidebarMode = 'overlay', }) => { const navigate = useNavigate(); const isSidebarVariant = variant === 'sidebar'; @@ -507,10 +511,11 @@ const DocumentViewerPanel: React.FC = ({ ); if (isSidebarVariant) { + const sidebarClass = `detail-panel panel${sidebarMode === 'inline' ? ' detail-panel--inline' : ''}${isPanelResizing ? ' detail-panel--resizing' : ''}`; return ( <>