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:
+ -
+ - '
}}
\ 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