Code copy button icon ignores the button colour
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
- Aktiv
- Tech-Stack
- css, html, scss
- Bereich
- accessibility, frontend
Rechercherichtung
Beginne mit src/resources/formats/html/_quarto-rules-copy-code.scss, das im Issue verlinkt ist, und untersuche die Regeln für die Icons zum Kopieren und für das Kopieren, einschließlich ihrer Hover-Varianten. Der Bericht nennt kompilierte SVG-Füllungen als Ursache und schlägt eine Maske mit currentColor vor. Die Aufgabe ist erledigt, wenn beide Icons in allen Themes und Hover-Zuständen der CSS-Farbe des Buttons folgen, auch auf einem dunklen Codeblock.
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
Quarto draws the copy button icon as a background-image SVG with its fill set at compile time from $btn-code-copy-color.
A background image can't read currentColor, so the icon keeps that compiled grey whatever colour the button gets in CSS.
This matters when a code block doesn't use the page's code background.
A dark "terminal" block on a light page is a common case.
Setting color on .code-copy-button is the natural fix, but the icon doesn't follow it.
On the dark block below, the icon is rgb(94, 94, 94) on rgb(17, 20, 24), which is 2.85:1 and under the 3:1 that WCAG 2.2 Success Criterion 1.4.11 asks for.
The same applies to the copied (check) icon and to the hover variants.
Steps to reproduce
---
title: "Copy button icon colour"
format:
html:
theme:
light: default
dark: darkly
include-in-header:
text: |
<style>
pre.dark-block,
div.sourceCode:has(> pre.dark-block) {
background-color: #111418;
color: #e6e8eb;
}
.code-copy-outer-scaffold:has(pre.dark-block) .code-copy-button {
color: #e6e8eb;
}
</style>
---
```{.bash .dark-block}
echo "hello"
```
Render it, hover the code block, and look at the copy button.
Actual behavior
The button computes color: rgb(230, 232, 235), but its .bi::before still paints the compiled icon:
background-image: url('data:image/svg+xml,<svg ... fill="rgb(94, 94, 94)" ...>');
The icon is grey on the dark block in both colour schemes.
Expected behavior
The icon follows the colour of the button, so a theme or a page can recolour it with color alone.
Drawing the icon as a mask-image over background-color: currentColor would do this, and $btn-code-copy-color could then set the button's color instead of the SVG fill.
Your environment
- IDE: none, the document is rendered with
quarto renderin a terminal. - OS: macOS 27.2 (Apple Silicon).
- Browser: Brave (Chromium).
- Quarto: a development build at 089ba530, which contains the v1.12.0 pre-release;
_quarto-rules-copy-code.scssis the same in v1.11.9, v1.12.0, and onmain.
Quarto check output
Quarto 99.9.9
[✓] Checking environment information...
Quarto cache location: /Users/mcanouil/Library/Caches/quarto
Project: none found (single-file mode)
[✓] Checking versions of quarto binary dependencies...
Pandoc version 3.10.0: OK
Dart Sass version 1.107.1: OK
Deno version 2.9.8: OK
Typst version 0.15.1: OK
[✓] Checking versions of quarto dependencies......OK
[✓] Checking Quarto installation......OK
Version: 99.9.9
commit: 089ba530b3ed4ec156a355d41b6b7de2db3e44ea
Path: /Users/mcanouil/Projects/quarto-dev/quarto-cli/package/dist/bin
[✓] Checking tools....................OK
TinyTeX: v2026.07
Chrome Headless Shell: (not installed)
VeraPDF: (not installed)
[✓] Checking LaTeX....................OK
Using: TinyTex
Path: /Users/mcanouil/Library/TinyTeX/bin/universal-darwin
Version: 2026
[✓] Checking Chrome Headless....................OK
Using: Chrome from QUARTO_CHROMIUM
Path: /Applications/Brave Browser.app/Contents/MacOS/Brave Browser
[✓] Checking basic markdown render....OK
ℹ R version 4.6.1 (2026-06-24)
! Config '~/.Rprofile' was loaded!
[✓] Checking R installation...........OK
Version: 4.6.1
Path: /Library/Frameworks/R.framework/Versions/4.6/Resources
LibPaths:
- /Users/mcanouil/Library/R/arm64/4.6/library
- /Library/Frameworks/R.framework/Versions/4.6/Resources/library
knitr: 1.51
rmarkdown: 2.31
[✓] Checking Knitr engine render......OK
[✓] Checking Python 3 installation....OK
Version: 3.9.6
Path: /Library/Developer/CommandLineTools/usr/bin/python3
Jupyter: (None)
Jupyter is not available in this Python installation.
Install with python3 -m pip install jupyter
[✓] Checking Julia installation...
- Vorherrschende Sprache
- JavaScript
- Sterne
- 6.1k
- Forks
- 478
- Ø Merge
- 17 Std. 53 Min.
- Gemergte PRs (30 T.)
- 135
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 embed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
quarto-dev/quarto-cli#15306 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bootstrap bug themes
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
quarto-dev/quarto-cli#15304 ·
Maintainer antworten meist innerhalb von 1 Tag
-
accessibility brand bug dark-mode
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
quarto-dev/quarto-cli#15301 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bootstrap bug html tables
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
quarto-dev/quarto-cli#15300 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug html
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
quarto-dev/quarto-cli#15297 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in quarto-dev/quarto-cli
Ähnliche Issues
-
Build produces empty forge.min.js: package.json lists "forge" instead of "node-forge"Evtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
Fei2411/DeepSeek-Bot#963 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Miaotofu01/Study-Mate#244 ·
Maintainer antworten meist innerhalb von 1 Tag
-
test-reliability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Azure/azure-sdk-for-js#40672 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
txn2/mcp-data-platform#2492 ·
Maintainer antworten meist innerhalb von 1 Tag