Dashboard: inactive light/dark navbar logo remains an empty focusable link
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 78/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- css, html
- Bereich
- accessibility, frontend
Rechercherichtung
Beginne mit src/resources/formats/dashboard/_nav-container.html und src/resources/formats/html/_quarto-rules.scss und rendere anschließend die mitgelieferte Dashboard-Reproduktion mit der axe-Ausgabe. Stelle sicher, dass die inaktive Theme-Variante ihren gesamten Logo-Link verbirgt, sodass in beiden Theme-Zuständen ein fokussierbarer, benannter Logo-Link und keine axe-Verletzung des Linknamens verbleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
I have:
- searched the issue tracker for similar issues
- installed the latest version of Quarto CLI
- formatted my issue following the Bug Reports guide
Bug description
A format: dashboard navbar logo is always rendered twice — a light-theme and a dark-theme copy, even when the author supplies a single logo: path (_nav-container.html#L3-L4). The theme CSS then hides the inactive copy — but the light-content/dark-content class sits on the <img>, not the wrapping <a>, and the hiding rules only match the image (_quarto-rules.scss#L765-L774).
So in every theme state the inactive logo's <a href="#"> remains rendered at 0×0: still in the keyboard tab order, exposed to assistive technology as a link with an empty accessible name (its only content is display: none, so it contributes nothing to name computation), and flagged by axe-core link-name (serious → WCAG 2.2 SC 2.4.4 Link Purpose (In Context)) — even when the author sets logo alt text. Keyboard and screen-reader users hit two consecutive logo links on every dashboard page, one of them invisible and unnamed.
The fix direction: put the visibility class on the <a> (or render the anchor conditionally), so hiding the theme variant removes the whole link from the tab order and accessibility tree. Authors can approximate this today with body.quarto-light .navbar-brand-container a:has(> .navbar-logo.dark-content) { display: none !important; } (and the quarto-dark/light-content mirror) — verified to leave one named logo tab stop and zero axe violations — but that shouldn't be required.
An AI assistant helped investigate, grounded in a local clone of quarto-cli (source pinned to 8577ed1c6), per CONTRIBUTING.md.
Steps to reproduce
---
title: "Logo repro"
format:
dashboard:
axe:
output: document
logo:
path: logo.png
alt: "Washington County, Oregon"
---
# Page one
## Row
Content.
quarto renderwith any smalllogo.pngalongside, and open the result in a browser.- Press
Tabfrom the top of the page, or run axe DevTools.
Actual behavior
Rendered navbar (both links always present):
<a href="#"><img src="logo.png" alt="Washington County, Oregon" class="navbar-logo light-content d-inline-block"></a>
<a href="#"><img src="logo.png" alt="Washington County, Oregon" class="navbar-logo dark-content d-inline-block"></a>
With body.quarto-light, the second link's <img> is display: none but the <a> computes to display: block at 0×0. Verified via CDP (Chrome 150) in both body.quarto-light and body.quarto-dark, with a single logo and with an explicit light:/dark: pair:
- Tab order:
navbar-toggler → logo link (light) → logo link (dark) → …— two logo stops, one invisible. - Accessibility tree: visible link
name="Washington County, Oregon"; inactive link exposed aslink, name="".
Axe-core:
Serious · WCAG 2.0 A (2.4.4, 4.1.2): Ensure links have discernible text
Links must have discernible text
a[href="#"]:nth-child(2)
Expected behavior
Only the active theme's logo link is focusable and exposed to assistive technology — one logo tab stop, no link-name violation. E.g. the light-content/dark-content class on the <a> so the existing hiding rules remove the whole link.
Your environment
- IDE: n/a (rendered from the command line; behavior is browser-side)
- OS: macOS 26.5.1 (build 25F80)
- Browsers checked: Chrome 150 (headless, CDP accessibility tree + simulated Tab)
Quarto check output
Quarto 1.10.12
[✓] Checking environment information...
Quarto cache location: /Users/charlottewickham/Library/Caches/quarto
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.8.3: OK
Dart Sass version 1.87.0: OK
Deno version 2.7.14: OK
Typst version 0.14.2: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
Version: 1.10.12
Path: /Applications/quarto/bin
[✓] Checking tools....................OK
TinyTeX: v2026.04
Chrome Headless Shell: 150.0.7871.115
VeraPDF: 1.28.2
[✓] Checking LaTeX....................OK
Using: TinyTex
Path: /Users/charlottewickham/Library/TinyTeX/bin/universal-darwin
Version: 2026
[✓] Checking Chrome Headless....................OK
Using: Chrome Headless Shell installed by Quarto
Path: /Users/charlottewickham/Library/Application Support/quarto/chrome-headless-shell/chrome-headless-shell-mac-arm64/chrome-headless-shell
Version: 150.0.7871.115
[✓] Checking basic markdown render....OK
[✓] Checking R installation...........OK
Version: 4.6.0
[✓] Checking Knitr engine render......OK
[✓] Checking Python 3 installation....OK
Version: 3.12.2
[✓] Checking Jupyter engine render....OK
[✓] Checking Julia installation...
- Vorherrschende Sprache
- JavaScript
- Sterne
- 6.1k
- Forks
- 471
- Ø Merge
- 16 Std. 41 Min.
- Gemergte PRs (30 T.)
- 102
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus quarto-dev/quarto-cli
-
accessibility bug website-navigation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
quarto-dev/quarto-cli#15190 ·
Maintainer antworten meist innerhalb von 1 Tag
-
accessibility bug website-navigation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
quarto-dev/quarto-cli#15188 ·
Maintainer antworten meist innerhalb von 1 Tag
-
accessibility bug html websites
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
quarto-dev/quarto-cli#15187 ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement themes websites
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
quarto-dev/quarto-cli#15179 ·
Maintainer antworten meist innerhalb von 1 Tag
-
about-page bug layout websites
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 82/100
quarto-dev/quarto-cli#15178 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in quarto-dev/quarto-cli
Ähnliche Issues
-
bug confirmed issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
open-webui/open-webui#33196 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
fable-compiler/Fable#5157 ·
Maintainer antworten meist innerhalb von 1 Tag
-
New tool: PaperBananaEvtl. vergeben @github-actions hat das heute übernommen. Offensubmission triage
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 75/100
kausalflow/tools#243 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
area: apple-music area: build-release bug effort: small priority: high
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
ChristianTabor/Argon#32 ·
Maintainer antworten meist innerhalb von 1 Tag
-
0️⃣ phase/new
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag