Skip to content

feat: 增加暗色模式#394

Open
MgAlNa3PO4 wants to merge 1 commit into
JefferyHcool:masterfrom
MgAlNa3PO4:master
Open

feat: 增加暗色模式#394
MgAlNa3PO4 wants to merge 1 commit into
JefferyHcool:masterfrom
MgAlNa3PO4:master

Conversation

@MgAlNa3PO4

Copy link
Copy Markdown

改动概述

为前端添加完整的暗色模式支持,默认启用暗色主题,并提供明/暗切换按钮。

为什么

当前前端只有亮色模式,长时间使用对眼睛不友好,暗色模式是现代应用的基本需求。项目已安装 next-themesindex.css 中已定义 .dark CSS 变量,但从未接入使用,大量组件使用硬编码颜色导致暗色模式无法生效。

做了什么

基础设施

  • 新增 ThemeProvider.tsx:封装 next-themesdefaultTheme="dark" + attribute="class"
  • 新增 ThemeToggle.tsx:太阳/月亮图标切换按钮,集成到 HomeLayout 和 SettingLayout header
  • 修改 index.html<html> 预设 class="dark" 防止首屏白闪
  • 修改 RootLayout.tsx:接入 ThemeProvider,bg-neutral-100bg-background

CSS 修复

  • 修复 bug.dark--border: #e6f7ff(亮蓝色)→ oklch(1 0 0 / 12%)
  • 修复--primary-foreground 暗色模式下文字不可读 → 改为 oklch(0.985 0 0)
  • 新增:暗色模式滚动条样式(.dark ::-webkit-scrollbar-*
  • 修改:3 个 CSS Module 中 #f7f7f7var(--muted)

颜色语义化(35+ 文件)

将所有硬编码颜色统一替换为 shadcn/ui 语义变量:

原始 替换为
bg-white bg-card
bg-neutral-100 / bg-gray-100 bg-muted
text-gray-700/800 / text-neutral-900 text-foreground
text-gray-400~600 / text-neutral-400~500 text-muted-foreground
border-neutral-200 / border-gray-300 border-border
hover:bg-neutral-100 / hover:bg-gray-200 hover:bg-accent
bg-[#F0F0F0] bg-muted
bg-[#FEF0F0] / text-[#303133] bg-destructive/10 / text-foreground

有意保留的颜色text-white(对比色)、bg-blue-*(品牌色)、text-green/red-*(状态色)、bg-gray-900(终端面板背景)

测试方式

  • npm run build 通过(19456 modules,24.66s,零错误)
  • 手动验证步骤:
    1. npm run dev 启动开发服务器
    2. 确认首次加载为暗色模式,无白屏闪烁
    3. 点击 header 区域的 🌙/☀️ 图标,确认可切换明/暗模式
    4. 检查以下页面在两种模式下显示正常:首页(表单/历史/预览)、设置页(模型/下载器/转写器/关于/监控)、Onboarding、404
    5. 刷新页面后主题选择保持不变(localStorage 持久化)

回归风险

  • 影响面:纯前端变更,不涉及后端 API。所有改动为 CSS 类名替换,无逻辑变更
  • 低风险区域:shadcn/ui 组件本身已内置 dark: 变量,替换后与原有行为一致
  • 需关注:MarkmapComponent 的 SVG 导出背景色改为 var(--background),导出的 SVG 文件背景将跟随当前主题;PNG 导出保持白色背景不变
  • 无需前后端同步部署

Checklist

  • 分支命名遵循 CONTRIBUTING.md §3feature/*
  • base 分支正确(常规改动 → develop
  • Commit message 遵循 type(scope): subject 格式:feat(frontend): 添加暗色模式支持,默认启用暗色主题
  • 已自测核心流程
  • 已更新相关文档(README.md / CHANGELOG.md / CLAUDE.md / 模块 README,如适用)
  • 未夹带 secrets / .env / 大型二进制
  • 单 PR 不跨多个工作区做无关改动

@MgAlNa3PO4 MgAlNa3PO4 changed the title 增加暗色模式 feat(frontend):增加暗色模式 Jun 3, 2026
@MgAlNa3PO4 MgAlNa3PO4 changed the title feat(frontend):增加暗色模式 feat(frontend): 增加暗色模式 Jun 3, 2026
@MgAlNa3PO4 MgAlNa3PO4 changed the title feat(frontend): 增加暗色模式 feat: 增加暗色模式 Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant