From 17f2ebc4deac379a2ad00d40e98d3bd64f953d12 Mon Sep 17 00:00:00 2001
From: Heera Rana <138364612+HeeraRana247453@users.noreply.github.com>
Date: Fri, 16 Jan 2026 19:48:59 +0530
Subject: [PATCH] feat: render document header image from document metadata
(#14255)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
### What
Adds support for rendering an optional image above the document title
using document metadata.
### Why
Provides a visual identifier for documents and improves readability for
users who rely on visual cues.
### How
- Reads `headerImage` from document metadata (if present)
- Renders the image above the editor when present
- Fully optional and non-breaking
- No BlockSuite or data model changes
### Related
fix #14240
## Summary by CodeRabbit
* **New Features**
* Documents can now display header images in the page editor. When a
header image is available, it appears above the editor content,
enhancing visual presentation and providing better context for your
documents.
✏️ Tip: You can customize this high-level summary in your review
settings.
---
.../src/components/page-detail-editor.tsx | 45 ++++++++++++++-----
1 file changed, 33 insertions(+), 12 deletions(-)
diff --git a/packages/frontend/core/src/components/page-detail-editor.tsx b/packages/frontend/core/src/components/page-detail-editor.tsx
index 47b14f13b3..4ced924b0a 100644
--- a/packages/frontend/core/src/components/page-detail-editor.tsx
+++ b/packages/frontend/core/src/components/page-detail-editor.tsx
@@ -25,6 +25,10 @@ export interface PageDetailEditorProps {
readonly?: boolean;
}
+type DocMetaWithHeaderImage = {
+ headerImage?: string;
+};
+
export const PageDetailEditor = ({
onLoad,
readonly,
@@ -34,6 +38,7 @@ export const PageDetailEditor = ({
const defaultOpenProperty = useLiveData(editor.defaultOpenProperty$);
const doc = useService(DocService).doc;
+ const docMeta = useLiveData(doc.meta$) as DocMetaWithHeaderImage | null;
const pageWidth = useLiveData(doc.properties$.selector(p => p.pageWidth));
const isSharedMode = editor.isSharedMode;
@@ -54,17 +59,33 @@ export const PageDetailEditor = ({
}, [editor, readonly]);
return (
-
+ <>
+ {docMeta?.headerImage && (
+
+ )}
+
+
+ >
);
};