Files
smart-crop-ui/src/THEME_REFACTOR_SUMMARY.md

6.6 KiB
Raw Blame History

主题重构总结

已完成的工作

1. globals.css 重构

移除内容

  • 移除了所有 .dark .bg-gray-* 非状态色定义
  • 移除了所有 .dark .text-gray-* 非状态色定义
  • 移除了所有 .dark .border-gray-* 非状态色定义

保留内容

  • 绿色状态(成功/激活bg-green-50/100, text-green-600/700/800, border-green-200/300
  • 红色状态(错误/危险bg-red-50/100, text-red-500/600/700/800, border-red-200
  • 黄色状态警告bg-yellow-50/100, text-yellow-500/600/700/800, border-yellow-200
  • 橙色状态警报bg-orange-50/100, text-orange-600/700/800, border-orange-200
  • 蓝色状态信息bg-blue-50/100/950/30, text-blue-300/400/600/700/800/900, border-blue-200/900
  • 紫色状态bg-purple-50/100, text-purple-600/700/800/900, border-purple-200
  • 粉色状态bg-pink-50/100, text-pink-700/800
  • 青色状态bg-cyan-50, text-cyan-800

组件样式更新

/* field-value 组件 - 使用标准变量 */
.field-value {
  @apply mt-2 text-base text-foreground px-3 py-2 bg-muted rounded-md min-h-[2.5rem] flex items-center transition-colors;
}

2. 业务代码重构

已修改文件

/components/config/PersonalInfo.tsx
// 企业名称输入框 - 禁用状态背景
- className="bg-gray-50 dark:bg-gray-800"
+ className="bg-muted"

// 部门输入框 - 禁用状态背景  
- className="bg-gray-50 dark:bg-gray-800"
+ className="bg-muted"
/components/Navigation.tsx
// 消息列表项悬停效果
- className="hover:bg-gray-50"
+ className="hover:bg-accent"

需要继续修改的文件

高优先级文件(核心功能)

1. AI 模块文件16个文件106+处修改点)

需要区分:

  • 状态色(保留):表示"离线"、"已忽略"、"禁用"、"建议"等状态的 bg-gray-100 text-gray-700/800
  • 信息框(修改)bg-gray-50bg-muted
  • 悬停(修改)hover:bg-gray-50hover:bg-accent
  • 代码块(可选)code标签的 bg-gray-100 可改为 bg-muted

关键文件:

  • /components/ai/AIAlertManagement.tsx - 19处
  • /components/ai/AIDataCenter.tsx - 18处
  • /components/ai/AIDecisionGeneration.tsx - 12处
  • /components/ai/AIAuditLog.tsx - 11处
  • /components/ai/AIDecisionLog.tsx - 9处
  • /components/ai/AIDecisionSimulation.tsx - 8处
  • /components/ai/AIDecisionDetail.tsx - 7处
  • /components/ai/AIDecisionSupport.tsx - 7处
  • /components/ai/AIDeviceControl.tsx - 6处
  • 其他AI组件

2. 资产管理模块

搜索并修改asset目录下的文件

3. 地块管理模块

搜索并修改field目录下的文件

4. 灌溉模块

搜索并修改irrigation目录下的文件

5. 农机管理模块

搜索并修改machinery目录下的文件

6. 农事操作模块

搜索并修改operation目录下的文件

7. 配置管理模块

搜索并修改config目录下的文件

修改模式示例

模式1信息展示框

// 查找
<div className="p-3 bg-gray-50 rounded">
<div className="p-4 bg-gray-50 rounded-lg">
<Card className="p-4 bg-gray-50">

// 替换为
<div className="p-3 bg-muted rounded">
<div className="p-4 bg-muted rounded-lg">
<Card className="p-4 bg-muted">

模式2悬停效果

// 查找
hover:bg-gray-50
hover:bg-gray-100

// 替换为(仅非状态色场景)
hover:bg-accent

模式3代码块可选修改

// 查找
<code className="text-xs bg-gray-100 px-2 py-1 rounded">

// 替换为
<code className="text-xs bg-muted px-2 py-1 rounded">

模式4状态Badge不修改

// 保持不变 - 这些是状态色
bg-gray-100 text-gray-800  // 用于"离线"、"已忽略"等中性状态
bg-gray-100 text-gray-700  // 用于"禁用"、"建议"等状态

修改策略

方案 A手动逐文件修改推荐

优点:

  • 可以准确判断每个场景
  • 避免误改状态色
  • 保证代码质量

步骤:

  1. 从核心功能文件开始config, Navigation等
  2. 逐个模块处理AI → 资产 → 地块 等)
  3. 每个文件修改后测试主题切换效果

方案 B搜索替换 + 人工review

使用正则表达式批量替换然后review

# 信息框背景(排除状态描述)
查找: className="([^"]*?)bg-gray-50([^"]*?)"
需人工判断是否为状态色

# 悬停效果
查找: hover:bg-gray-(50|100)
替换: hover:bg-accent

# 代码块背景
查找: <code[^>]*bg-gray-100
替换: bg-muted

验证清单

修改完成后需要验证:

功能验证

  • 亮色主题显示正常
  • 暗色主题显示正常
  • 主题切换流畅无闪烁
  • 所有状态色正确显示(绿/红/黄/橙/蓝等)

视觉验证

  • 信息展示框背景适配主题
  • 禁用输入框背景适配主题
  • 悬停效果明显且美观
  • 文本对比度符合可访问性要求
  • 卡片层次感清晰

模块验证

  • 个人中心模块
  • 水肥机管理
  • 智慧灌溉
  • AI决策系统
  • 资产管理
  • 地块管理
  • 农机管理
  • 农事操作

注意事项

1. 保留状态色

以下className包含状态语义不要修改

// 表示"离线"状态
getStatusColor(status) {
  case '离线': return 'bg-gray-100 text-gray-700';
}

// 表示"已忽略"状态  
status === '已忽略' ? 'bg-gray-100 text-gray-800' : ...

// 表示"禁用"状态
status === '禁用' ? 'bg-gray-100 text-gray-700' : ...

// 表示"建议"级别
level === '建议' ? 'bg-gray-100 text-gray-700' : ...

2. 代码块可选修改

<code> 标签的 bg-gray-100 可以改为 bg-muted,但不是必需的。

3. 测试充分性

每个模块修改后都应该:

  1. 在亮色模式下检查
  2. 在暗色模式下检查
  3. 切换主题看是否流畅

4. 渐进式修改

建议按模块逐步修改,而不是一次性修改所有文件,这样便于定位问题。

预期效果

重构完成后:

  1. 所有背景、文本、边框色都使用shadcn主题变量
  2. 主题切换时所有元素都能正确适配
  3. 状态色在两种主题下都清晰可辨
  4. 保持绿色农业主题的视觉风格
  5. 代码更简洁,维护性更好

下一步行动

  1. 根据修改优先级列表,逐个处理各模块文件
  2. 每修改完一个模块,提交一次代码
  3. 全部完成后进行全面测试
  4. 更新系统文档

相关文档

  • /THEME_REFACTOR_GUIDE.md - 详细的修改指南和示例
  • /styles/globals.css - 主题变量定义
  • /components/ThemeProvider.tsx - 主题管理组件