From 814407925c942fcacf4d090084a2bfbab66013d5 Mon Sep 17 00:00:00 2001 From: PJ Date: Thu, 23 Apr 2026 00:38:36 +0700 Subject: [PATCH] feat(docs): dark/light mode toggle Add theme toggle button (top-right, fixed). Persists preference in localStorage; falls back to prefers-color-scheme. Flash-free via inline script in that sets data-theme before first paint. --- docs/_assets/style.css | 49 ++++++++++++++++++++++++++++++++++++++++ docs/_template/page.html | 21 +++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/docs/_assets/style.css b/docs/_assets/style.css index 50e065d..2198f98 100644 --- a/docs/_assets/style.css +++ b/docs/_assets/style.css @@ -21,6 +21,24 @@ } } +html[data-theme="light"] { + --bg: #ffffff; + --fg: #2a2a2a; + --muted: #6a6a6a; + --border: #e5e5e5; + --accent: #0a66c2; + --code-bg: #f6f6f6; +} + +html[data-theme="dark"] { + --bg: #0f0f10; + --fg: #e5e5e5; + --muted: #a0a0a0; + --border: #2a2a2a; + --accent: #4aa3ff; + --code-bg: #1a1a1b; +} + * { box-sizing: border-box; } html { background: var(--bg); color: var(--fg); } @@ -213,6 +231,37 @@ footer a { color: var(--muted); } padding: 1.5rem; } +.theme-toggle { + position: fixed; + top: 1rem; + right: 1rem; + z-index: 100; + background: var(--code-bg); + border: 1px solid var(--border); + color: var(--fg); + cursor: pointer; + padding: 0.35rem; + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + transition: border-color 0.15s; +} + +.theme-toggle:hover { border-color: var(--muted); } + +.theme-toggle svg { + width: 1rem; + height: 1rem; +} + +html[data-theme="light"] .icon-sun { display: none; } +html[data-theme="light"] .icon-moon { display: block; } +html[data-theme="dark"] .icon-sun { display: block; } +html[data-theme="dark"] .icon-moon { display: none; } + @media (max-width: 768px) { .layout { grid-template-columns: 1fr; } .sidebar { diff --git a/docs/_template/page.html b/docs/_template/page.html index 6cedf2a..aad5e5f 100644 --- a/docs/_template/page.html +++ b/docs/_template/page.html @@ -9,8 +9,23 @@ + +