fix(webui): 修「宽屏导航栏还是黑色」的真因 —— 应用没有深色主题,导航却单独变深

用户:「宽屏 ui 你是一点没修复啊」。

## 真因(我前两轮都判断错了方向)

不是令牌抄错、也不是特异性覆盖。是**整个应用根本没有深色主题**:

- `tailwind.config.js` 里 `darkMode: 'class'` 是配好的,
- 但我数了一遍:**没有任何组件写过 `dark:` 变体**(`grep -c 'dark:' src/components/*.tsx` 全 0);

⇒ 挂上 `.dark` 只会切换我手写的 CSS 变量,Tailwind 工具类一律照旧。
于是系统是深色时(`prefers-color-scheme: dark` → themeStore 的 `system` 解析为 dark):
**导航**(有深色令牌)变深、**正文**(没有深色样式)仍是浅色 —— 界面半深不浅,
用户看到的就是"导航栏为什么还是黑色"。

## 改法

在真正的深色主题做出来之前,导航**跟随内容的实际形态**(浅色):
`.dark` 里的导航令牌块清空并留下说明。要做深色主题的正确做法是给组件补齐
`dark:` 变体(独立一件事),而不是先把导航单独压深。

顺带:
- 删掉一条更早的 `.app-shell > .bg-chrome-900 { background-color: rgb(var(--c-chrome-900)/0.82) }`
  —— 侧栏改成 `.nav-rail` 之后它是死代码,但特异性更高,一旦有人再挂上那个类就会重新变黑。
- 「我的」页宽屏用满:`max-w-lg`(512px,右半边全空)→ `max-w-3xl mx-auto`。

## 实测(自己的无头 Chromium,因为共享 9222 的 CDP 已被僵尸上下文拖死)

    系统浅色: htmlDark=false, 侧栏 rgba(255,255,255,0.72)
    系统深色: htmlDark=true,  侧栏 rgba(255,255,255,0.72)   ← 不再单独变黑(这就是修复点)

## 顺带清理

共享 Chromium(9222)里我历次被中断的运行留下了 12 个僵尸标签,
已按 URL 精确关闭(保留 5174/8080/18091 等别人的标签)。
This commit is contained in:
2026-09-14 13:08:19 +08:00
parent 5434bc9e4e
commit faacd3c911
2 changed files with 23 additions and 12 deletions

View File

@ -101,7 +101,7 @@ export default function AccountPage() {
没有任何办法滚到。实测 390px 下内容需 860px、容器只有 795px
1280x800 的桌面上同样看不到最后的「退出登录」。 */}
<div className="flex-1 overflow-y-auto">
<div className="max-w-lg px-4 md:px-6 py-6 space-y-6">
<div className="w-full max-w-3xl mx-auto px-4 md:px-6 lg:px-10 py-6 space-y-6">
{/* 基本信息 */}
<section>
<h3 className="text-xs font-medium text-gray-500 mb-3"></h3>

View File

@ -1119,10 +1119,14 @@ html.view-switch .glass-control,
* 桌面侧栏:无论有没有壁纸都做深色玻璃 —— 否则它是全页唯一一块实心黑。
* α=0.82 比壁纸模式的 0.72 实一点:此时它后面是页面底色而不是照片,太透只会显脏。
*/
.app-shell > .bg-chrome-900 {
background-color: rgb(var(--c-chrome-900) / 0.82);
/* 不留 backdrop-filter它浮在已模糊的壁纸上再模糊只是叠一层 */
}
/*
* 这里曾有一条 `.app-shell > .bg-chrome-900 { background-color: rgb(var(--c-chrome-900) / 0.82) }`。
*
* 用户报「宽屏 ui 你是一点没修复啊」「导航栏为什么还是黑色」——它就是元凶:
* 侧栏改成 `.nav-rail`(走 --nav-bg 令牌,浅色主题=白玻璃)之后,这条更早的规则
* **特异性更高**(0,2,0) > (0,1,0)),继续把侧栏压成深色,看起来就像"根本没改"。
* 现在整条删掉:侧栏底色只有 --nav-bg 一个来源。
*/
/*
@ -1213,14 +1217,21 @@ html.view-switch .glass-control,
--nav-border: 15 23 42 / 0.08;
}
/*
* ★ 深色主题:**暂不单独给导航换色**2026-09-14 用户:「导航栏为什么还是黑色」)。
*
* 根因不是令牌抄错,而是**整个应用还没有深色主题**
* `tailwind.config.js` 里 `darkMode: 'class'` 是配好的,但**没有任何组件写 `dark:` 变体**
* ⇒ 挂上 `.dark` 只会切换我手写的 CSS 变量Tailwind 工具类一律照旧。
* 于是系统是深色时:导航(有深色令牌)变深、正文(没有深色样式)仍是浅色 ——
* 界面半深不浅,用户看到的就是"导航栏还是黑色"。
*
* 在真正的深色主题做出来之前,导航跟随**内容的实际形态**(浅色)。
* 要做深色主题,正确做法是给组件补齐 `dark:` 变体(那是独立一件事),
* 而不是先把导航单独压深。
*/
.dark {
--nav-bg: 15 23 42 / 0.72;
--nav-fg: 248 250 252;
--nav-fg-muted: 148 163 184;
--nav-hover-bg: 255 255 255 / 0.08;
--nav-active-bg: 30 58 138;
--nav-active-fg: 219 234 254;
--nav-border: 255 255 255 / 0.1;
/* 有意留空:等深色主题落地后,这里再与组件一起打开 */
}
.nav-rail {