---
name: admin-theme-consistency
description: MallBase Vben Admin 主题与 Modal 表单一致性规则；开发后台页面、组件样式、弹窗表单或明暗色适配时使用。
---

# Vben 规则：后台主题与 Modal 表单一致性

## 适用范围

`frontend/admin/apps/web-antd` 后台页面、表单、弹窗、上传与富文本相关 UI。

## 强制规则

1. 禁止写死浅色背景（如 `#fff`、`#f5f5f5`）作为页面主容器颜色。
2. 优先使用主题变量：`hsl(var(--background))`、`hsl(var(--card))`、`hsl(var(--popover))`、`hsl(var(--border))`、`hsl(var(--foreground))`。
3. 组件样式改动必须同时验证浅色和深色模式，不允许只修一种主题。
4. 富文本、上传预览、表单校验提示等嵌入式区域必须跟随主题。
5. 第三方组件样式通过受控容器 class 或 CSS 变量桥接，不做无边界全局覆盖。
6. Modal 表单优先复用同模块、同类型页面的布局；水平或垂直布局应由字段密度、弹窗宽度和响应式需求决定。
7. 标签宽度在表单级统一配置，但 `100px` 不是全局硬编码；仅在相邻实现和字段文案都适合时使用，窄弹窗或长标签应采用响应式配置或垂直布局。
8. 表单间距使用项目现有样式体系统一控制，禁止把 `pt-4`、`mt-4` 等单一 class 当成所有弹窗的强制模板。

## 推荐做法

1. 页面容器使用统一语义 class 承接主题变量，避免每页重复写样式。
2. 状态色优先走设计系统 token，不自行定义一套颜色。
3. 深色模式下，边框优先提升对比度而非提升纯亮度。
4. 新增或编辑弹窗先检查同模块现有 Modal，复用其宽度、label 布局、校验提示和按钮顺序。
5. 内容可能超出视口时，为 Modal 主体设置受控滚动区域，避免操作按钮被挤出可视范围。

## 自检清单

- [ ] 深色模式下无明显白底区域（页面、卡片、弹窗、上传区、编辑器）。
- [ ] 表单输入、错误提示、禁用态在浅色和深色都可读。
- [ ] 上传组件（图片/视频/文件）列表与预览区域跟随主题。
- [ ] Modal 的布局与同模块页面一致，标签不截断，窄屏下无横向溢出。
- [ ] 改动后手动检查受影响页面的浅色、深色和典型弹窗状态。
