diff --git a/src/format/reveal/format-reveal.ts b/src/format/reveal/format-reveal.ts index b5d2f1a473c..d8d70ec49a1 100644 --- a/src/format/reveal/format-reveal.ts +++ b/src/format/reveal/format-reveal.ts @@ -398,8 +398,25 @@ const determineRevealLogo = (format: Format): string | undefined => { function revealMarkdownAfterBody(format: Format) { const lines: string[] = []; lines.push("::: {.quarto-auto-generated-content style='display: none;'}\n"); - const revealLogo = (format.metadata[kSlideLogo] as (string | undefined)) ?? - determineRevealLogo(format); + let revealLogo = format + .metadata[kSlideLogo] as (string | { path: string } | undefined); + if (revealLogo) { + if (typeof revealLogo === "object") { + revealLogo = revealLogo.path; + } + if (["small", "medium", "large"].includes(revealLogo)) { + const brandData = format.render.brand?.processedData; + const logoInfo = brandData?.logo + ?.[revealLogo as ("medium" | "small" | "large")]; + if (typeof logoInfo === "string") { + revealLogo = logoInfo; + } else { + revealLogo = logoInfo?.light.path ?? logoInfo?.dark.path; + } + } + } else { + revealLogo = determineRevealLogo(format); + } if (revealLogo) { lines.push( ``, diff --git a/src/resources/filters/quarto-post/dashboard.lua b/src/resources/filters/quarto-post/dashboard.lua index aabfd7ab295..de01e5249d7 100644 --- a/src/resources/filters/quarto-post/dashboard.lua +++ b/src/resources/filters/quarto-post/dashboard.lua @@ -737,6 +737,44 @@ function render_dashboard() return doc end end + }, { + -- todo: dark mode + Meta = function(meta) + local logo = meta.logo + local resolved + if logo then + local which + if pandoc.utils.type(logo) == 'Inlines' then + which = logo[1].text + local brandLogo = _quarto.modules.brand.get_logo(logo[1].text) + resolved = brandLogo and brandLogo.light + elseif type(logo) == 'table' then + local brandLogo = _quarto.modules.brand.get_logo(logo.path[1].text) + if brandLogo then + resolved = brandLogo.light + if logo.alt then + resolved.alt = logo.alt + end + else + resolved = { + path = logo.path, + alt = logo.alt + } + end + end + else + logo = _quarto.modules.brand.get_logo('small') + or _quarto.modules.brand.get_logo('medium') + or _quarto.modules.brand.get_logo('large') + resolved = logo and logo.light + end + if resolved then + meta.logo = resolved.path + meta['logo-alt'] = resolved.alt + end + + return meta + end } } end \ No newline at end of file diff --git a/tests/docs/smoke-all/brand/logo/choose-logo-resource.qmd b/tests/docs/smoke-all/brand/logo/choose-logo-resource.qmd new file mode 100644 index 00000000000..ed41e944757 --- /dev/null +++ b/tests/docs/smoke-all/brand/logo/choose-logo-resource.qmd @@ -0,0 +1,31 @@ +--- +title: brand and base logo +format: + dashboard: default +brand: + logo: + images: + quarto: + path: quarto.png + alt: quarto logo + posit: + path: posit-logo-2024.svg + alt: posit logo + medium: quarto + large: posit +logo: large +_quarto: + tests: + dashboard: + ensureFileRegexMatches: + - + - '' + - [] +--- + +{{< lipsum 4 >}} \ No newline at end of file diff --git a/tests/docs/smoke-all/brand/logo/default-logo.qmd b/tests/docs/smoke-all/brand/logo/default-logo.qmd new file mode 100644 index 00000000000..7e43cb8f22b --- /dev/null +++ b/tests/docs/smoke-all/brand/logo/default-logo.qmd @@ -0,0 +1,31 @@ +--- +title: brand and base logo +format: + dashboard: default + revealjs: default +brand: + logo: + images: + quarto: + path: quarto.png + alt: quarto logo + posit: + path: posit-logo-2024.svg + alt: posit logo + medium: quarto + large: posit +_quarto: + tests: + dashboard: + ensureFileRegexMatches: + - + - '' + - [] +--- + +{{< lipsum 4 >}} \ No newline at end of file diff --git a/tests/docs/smoke-all/brand/logo/override-logo-path-alt.qmd b/tests/docs/smoke-all/brand/logo/override-logo-path-alt.qmd new file mode 100644 index 00000000000..eb062d6907e --- /dev/null +++ b/tests/docs/smoke-all/brand/logo/override-logo-path-alt.qmd @@ -0,0 +1,33 @@ +--- +title: brand and base logo +format: + dashboard: default +brand: + logo: + images: + quarto: + path: quarto.png + alt: quarto logo + posit: + path: posit-logo-2024.svg + alt: posit logo + medium: quarto + large: posit +logo: + path: posit-logo-2024.svg + alt: posit logo +_quarto: + tests: + dashboard: + ensureFileRegexMatches: + - + - '' + - [] +--- + +{{< lipsum 4 >}} \ No newline at end of file diff --git a/tests/docs/smoke-all/brand/logo/override-logo-path.qmd b/tests/docs/smoke-all/brand/logo/override-logo-path.qmd new file mode 100644 index 00000000000..0d70f7b7323 --- /dev/null +++ b/tests/docs/smoke-all/brand/logo/override-logo-path.qmd @@ -0,0 +1,32 @@ +--- +title: brand and base logo +format: + dashboard: default + revealjs: default +brand: + logo: + images: + quarto: + path: quarto.png + alt: quarto logo + posit: + path: posit-logo-2024.svg + alt: posit logo + medium: quarto + large: posit +logo: posit-logo-2024.svg +_quarto: + tests: + dashboard: + ensureFileRegexMatches: + - + - '' + - [] +--- + +{{< lipsum 4 >}} \ No newline at end of file diff --git a/tests/docs/smoke-all/brand/logo/override-logo-resource-alt.qmd b/tests/docs/smoke-all/brand/logo/override-logo-resource-alt.qmd new file mode 100644 index 00000000000..e3d2a597b6f --- /dev/null +++ b/tests/docs/smoke-all/brand/logo/override-logo-resource-alt.qmd @@ -0,0 +1,28 @@ +--- +title: brand and base logo +format: + dashboard: default +brand: + logo: + images: + quarto: + path: quarto.png + alt: quarto logo + posit: + path: posit-logo-2024.svg + alt: posit logo + medium: quarto + large: posit +logo: + path: large + alt: logo of posit +_quarto: + tests: + dashboard: + ensureFileRegexMatches: + - + - 'logo of posit}} \ No newline at end of file diff --git a/tests/docs/smoke-all/brand/logo/override-logo-resource.qmd b/tests/docs/smoke-all/brand/logo/override-logo-resource.qmd new file mode 100644 index 00000000000..06aba87c1d2 --- /dev/null +++ b/tests/docs/smoke-all/brand/logo/override-logo-resource.qmd @@ -0,0 +1,32 @@ +--- +title: brand and base logo +format: + dashboard: default +brand: + logo: + images: + quarto: + path: quarto.png + alt: quarto logo + posit: + path: posit-logo-2024.svg + alt: posit logo + medium: quarto + large: posit +logo: + path: large +_quarto: + tests: + dashboard: + ensureFileRegexMatches: + - + - '' + - [] +--- + +{{< lipsum 4 >}} \ No newline at end of file diff --git a/tests/docs/smoke-all/brand/logo/posit-logo-2024.svg b/tests/docs/smoke-all/brand/logo/posit-logo-2024.svg new file mode 100644 index 00000000000..2bd9317f225 --- /dev/null +++ b/tests/docs/smoke-all/brand/logo/posit-logo-2024.svg @@ -0,0 +1,17 @@ + + diff --git a/tests/docs/smoke-all/brand/logo/quarto.png b/tests/docs/smoke-all/brand/logo/quarto.png new file mode 100644 index 00000000000..616d17b92cb Binary files /dev/null and b/tests/docs/smoke-all/brand/logo/quarto.png differ