From e6049847bd931df14268cb45812c7977910ab2c5 Mon Sep 17 00:00:00 2001 From: saberzero1 Date: Sat, 28 Feb 2026 04:31:51 +0100 Subject: [PATCH] feat: add frame resolution to page type dispatcher and config loader --- quartz/plugins/loader/config-loader.ts | 5 +++++ quartz/plugins/loader/types.ts | 2 ++ quartz/plugins/pageTypes/dispatcher.ts | 3 +++ 3 files changed, 10 insertions(+) diff --git a/quartz/plugins/loader/config-loader.ts b/quartz/plugins/loader/config-loader.ts index 2e28358da..6e04a097e 100644 --- a/quartz/plugins/loader/config-loader.ts +++ b/quartz/plugins/loader/config-loader.ts @@ -543,6 +543,11 @@ export async function loadQuartzLayout(layoutOverrides?: { } } + // Apply frame template override + if (override.template) { + ptLayout.frame = override.template + } + byPageType[pageType] = ptLayout } } diff --git a/quartz/plugins/loader/types.ts b/quartz/plugins/loader/types.ts index 04c4be9ba..0cb0432ec 100644 --- a/quartz/plugins/loader/types.ts +++ b/quartz/plugins/loader/types.ts @@ -159,6 +159,8 @@ export interface FlexGroupConfig { export interface PageTypeLayoutOverride { exclude?: string[] positions?: Partial> + /** Override the page frame template (e.g. "default", "full-width", "minimal") */ + template?: string } /** Top-level layout section of quartz.config.yaml */ diff --git a/quartz/plugins/pageTypes/dispatcher.ts b/quartz/plugins/pageTypes/dispatcher.ts index e3af1e1a2..c49e22a29 100644 --- a/quartz/plugins/pageTypes/dispatcher.ts +++ b/quartz/plugins/pageTypes/dispatcher.ts @@ -21,6 +21,8 @@ function resolveLayout( byPageType: Record>, ): FullPageLayout { const overrides = byPageType[pageType.layout] ?? {} + // Frame priority: config override > page type declaration > default + const frame = overrides.frame ?? pageType.frame ?? "default" return { head: overrides.head ?? sharedDefaults.head!, header: overrides.header ?? sharedDefaults.header ?? [], @@ -30,6 +32,7 @@ function resolveLayout( left: overrides.left ?? sharedDefaults.left ?? [], right: overrides.right ?? sharedDefaults.right ?? [], footer: overrides.footer ?? sharedDefaults.footer!, + frame, } }