From 6dcf5822257dc439f53af2a8099ac1472959e491 Mon Sep 17 00:00:00 2001
From: wangjia <809946525@qq.com>
Date: Wed, 8 Jul 2026 11:58:35 +0800
Subject: [PATCH] =?UTF-8?q?feat(website):=20=E5=AE=98=E7=BD=91=E5=8A=A0?=
=?UTF-8?q?=E6=98=8E/=E6=9A=97=E4=B8=BB=E9=A2=98=E5=88=87=E6=8D=A2(?=
=?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=B5=85=E8=89=B2,=E6=97=A0=20FOUC)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Header 加 Moon/Sun 切换按钮(.themetoggle class,走语义 token,无内联 style),
切 document.documentElement.dataset.theme + 存 localStorage pg_site_theme,
挂载读回同步;移动端也能切。
- Site.astro + Doc.astro
加
{metaTitle}
{desc && }
diff --git a/web/website/src/layouts/Site.astro b/web/website/src/layouts/Site.astro
index 36a5589..f980b51 100644
--- a/web/website/src/layouts/Site.astro
+++ b/web/website/src/layouts/Site.astro
@@ -70,6 +70,8 @@ const headerT = {
+ {/* 首屏渲染前设好 data-theme,避免明/暗切换闪烁(FOUC)。postbuild 会给此内联脚本加 CSP hash。 */}
+
{t('meta.title')}
diff --git a/web/website/src/styles/website.css b/web/website/src/styles/website.css
index 2d821b7..5ff90fb 100644
--- a/web/website/src/styles/website.css
+++ b/web/website/src/styles/website.css
@@ -42,6 +42,11 @@ img,svg{display:block}
.linklogin{font-size:14.5px;font-weight:600;color:var(--fg1);cursor:pointer}
.linklogin:hover{color:var(--accent)}
+/* 明/暗主题切换(顶栏图标按钮,随 token 自适配) */
+.themetoggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;flex-shrink:0;border:1.5px solid var(--border-strong);border-radius:var(--radius-full);background:var(--surface);color:var(--fg2);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
+.themetoggle:hover{border-color:var(--accent);color:var(--accent)}
+.themetoggle svg{width:18px;height:18px}
+
/* ---------- language dropdown ---------- */
.langwrap{position:relative;display:inline-block}
.langsel{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--border-strong);border-radius:var(--radius-full);padding:8px 14px;background:var(--surface);color:var(--fg1);font-family:var(--font-sans);font-size:14px;font-weight:600;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}