From d9700da7ee15afde1bb163abdac8526f169cb933 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 25 Jul 2026 03:47:42 +0000 Subject: [PATCH 1/3] Add dark/light/system theme chooser to workshop docs menu Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- scripts/build-docs.js | 111 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 104 insertions(+), 7 deletions(-) diff --git a/scripts/build-docs.js b/scripts/build-docs.js index aadb71fa..bd6d6168 100644 --- a/scripts/build-docs.js +++ b/scripts/build-docs.js @@ -350,13 +350,19 @@ const docsCss = `/* Improve link discoverability in rendered workshop docs */ } @media (prefers-color-scheme: dark) { - :root { + html[data-color-mode="auto"] { --workshop-link-color: var(--fgColor-accent, #58a6ff); --workshop-link-visited-color: var(--fgColor-done, #bc8cff); --workshop-link-hover-color: var(--fgColor-accent, #79c0ff); } } +html[data-color-mode="dark"] { + --workshop-link-color: var(--fgColor-accent, #58a6ff); + --workshop-link-visited-color: var(--fgColor-done, #bc8cff); + --workshop-link-hover-color: var(--fgColor-accent, #79c0ff); +} + body, .markdown-body { font-family: 'Mona Sans Variable', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; @@ -733,28 +739,49 @@ html { } @media (prefers-color-scheme: dark) { - .workshop-nav-btn-primary { + html[data-color-mode="auto"] .workshop-nav-btn-primary { background-color: var(--bgColor-accent-emphasis, #1f6feb); color: #ffffff; } - .workshop-nav-btn-primary:hover, - .workshop-nav-btn-primary:focus-visible { + html[data-color-mode="auto"] .workshop-nav-btn-primary:hover, + html[data-color-mode="auto"] .workshop-nav-btn-primary:focus-visible { background-color: var(--bgColor-accent-emphasis, #1f6feb); color: #ffffff; filter: brightness(0.9); } - .workshop-nav-btn-secondary { + html[data-color-mode="auto"] .workshop-nav-btn-secondary { color: var(--fgColor-default, #e6edf3); background-color: var(--bgColor-muted, #161b22); border-color: var(--borderColor-default, #30363d); } - .workshop-nav-btn-secondary:hover, - .workshop-nav-btn-secondary:focus-visible { + html[data-color-mode="auto"] .workshop-nav-btn-secondary:hover, + html[data-color-mode="auto"] .workshop-nav-btn-secondary:focus-visible { color: var(--fgColor-default, #e6edf3); background-color: var(--bgColor-subtle, #1c2128); } } +html[data-color-mode="dark"] .workshop-nav-btn-primary { + background-color: var(--bgColor-accent-emphasis, #1f6feb); + color: #ffffff; +} +html[data-color-mode="dark"] .workshop-nav-btn-primary:hover, +html[data-color-mode="dark"] .workshop-nav-btn-primary:focus-visible { + background-color: var(--bgColor-accent-emphasis, #1f6feb); + color: #ffffff; + filter: brightness(0.9); +} +html[data-color-mode="dark"] .workshop-nav-btn-secondary { + color: var(--fgColor-default, #e6edf3); + background-color: var(--bgColor-muted, #161b22); + border-color: var(--borderColor-default, #30363d); +} +html[data-color-mode="dark"] .workshop-nav-btn-secondary:hover, +html[data-color-mode="dark"] .workshop-nav-btn-secondary:focus-visible { + color: var(--fgColor-default, #e6edf3); + background-color: var(--bgColor-subtle, #1c2128); +} + @media (max-width: 543px) { .workshop-navigation { flex-wrap: wrap; @@ -770,6 +797,46 @@ html { align-items: flex-start; } } + +.workshop-menu-footer { + flex: 0 0 auto; + padding: 12px 20px; + border-top: 1px solid var(--borderColor-muted, #d0d7de); +} +.workshop-theme-chooser { + display: flex; + border: 1px solid var(--borderColor-default, #d0d7de); + border-radius: 6px; + overflow: hidden; +} +.workshop-theme-btn { + flex: 1; + padding: 6px 4px; + font-size: 12px; + font-weight: 500; + font-family: inherit; + color: var(--fgColor-muted, #59636e); + background: transparent; + border: 0; + border-right: 1px solid var(--borderColor-default, #d0d7de); + cursor: pointer; +} +.workshop-theme-btn:last-child { + border-right: 0; +} +.workshop-theme-btn:hover { + background-color: var(--bgColor-muted, #f6f8fa); + color: var(--fgColor-default, #1f2328); +} +.workshop-theme-btn:focus-visible { + outline: 2px solid var(--fgColor-accent, #0969da); + outline-offset: -2px; +} +.workshop-theme-btn[aria-pressed="true"] { + background-color: var(--bgColor-accent-muted, #ddf4ff); + color: var(--fgColor-accent, #0969da); + font-weight: 600; +} `; fs.writeFileSync(path.join(distDir, 'docs.css'), docsCss); @@ -917,6 +984,7 @@ const page = ` +