--- title: 'Pagebuilder' --- # Pagebuilder ## Scope - Pagebuilder thumbnail and live-preview rendering in project t1 - FK lookup hydration for block registries and mock/demo blocks - URL normalization for linked media in pagebuilder rows ## Prerequisites - Run in mock mode only - Use project t1 - Relevant spec: tests/e2e/pagebuilder.spec.ts ## Test Cases | ID | Description | Expected Result | Priority | | --- | --- | --- | --- | | PB-32 | Hero preview without explicit bgImage uses linked mediaRef lookup | Thumbnail/live preview renders the linked media image instead of an empty background | High | | PB-36b | Direct image-widget block in editor_lab pageContent | Before save, the live thumbnail renders the direct block image source in live mode and the mock placeholder variant in mock mode; after save, the generated screenshot replaces the raw image source | High | | PB-40b | Lookup normalization receives a data: or blob: media URL | Inline media URI stays unchanged and is not prefixed with /api/_// | High | | PB-40c | Existing server-style nested `_lookup` entries in pagebuilder rows are hydrated for preview | Pagebuilder hydration rewrites nested lookup `file.src` values to absolute admin URLs without changing the underlying mock/API payload shape | High | | PB-35b | Nested object[] items inside a pagebuilder block use FK/foreignFile lookups | Thumbnail/live preview resolves indexed paths like slides.0.image into the correct child item instead of leaving nested media unresolved | High | ## Edge Cases - Newly uploaded media may exist as data URI before backend persistence; pagebuilder previews must still render it. - Direct file/image widgets inside screenshot-enabled pagebuilder blocks must be included in both live thumbnail rendering and saved screenshot generation. - Blob URLs from client-side editors or upload flows must remain browser-local and must not be rewritten. - Lookup embedding must honor numeric path segments for nested object[] descendants inside pagebuilder blocks. - Existing server-style `_lookup` payloads inside pagebuilder rows must stay server-style in mock/API data, but preview hydration still has to absolutize nested `file.src` values for admin rendering. ## Accessibility - Thumbnail previews remain decorative only; no additional focus targets are introduced by the media rendering path.