基于 2B 软件标准的专业 UI 设计改造
版本: v2.1.6 改造日期: 2025-10-18 设计标准: 参考 Salesforce, Microsoft 365, Notion, Linear
✅ 设计系统建立
- 创建统一的设计 Token 体系 (
web/src/theme/design-tokens.less) - 基于 Logo 蓝白基调设计完整配色方案
- 建立 8px 基准的间距系统
- 定义轻量化阴影系统
✅ 全局主题配置
- 更新 Ant Design 主题配置 (
web/src/theme/theme.ts) - 统一变量文件 (
web/src/theme/vars.less,web/src/less/variable.less) - 配色从混乱的 3 种蓝色统一为品牌蓝色体系
✅ 主布局优化
- 侧边栏宽度从 88px 扩展到 240px(更符合 2B 标准)
- 白色背景 + 轻阴影替代原有深色背景
- 内容区域增加圆角和卡片阴影
✅ 侧边栏菜单改造
- 横向布局(图标 + 文字)替代纵向拥挤布局
- 菜单项高度增加到 48px(更易点击)
- 激活状态:左侧蓝色指示条 + 浅蓝背景
- Hover 状态平滑过渡动画
基于 Logo 渐变色 (#2563eb → #0ea5e9) 建立品牌色系:
// 主品牌色
@brand-primary-500: #3b82f6; // 主色调
@brand-primary-600: #2563eb; // Logo 起始色
@brand-gradient: linear-gradient(135deg, #2563eb 0%, #0ea5e9 100%);
// 中性色系
@neutral-50: #f8fafc; // 页面背景
@neutral-100: #f1f5f9; // 卡片背景
@neutral-200: #e2e8f0; // 边框
@neutral-500: #64748b; // 次要文本
@neutral-900: #0f172a; // 主文本
// 功能色
@color-success: #10b981;
@color-warning: #f59e0b;
@color-error: #ef4444;
@color-info: #0ea5e9;@space-xs: 4px;
@space-sm: 8px;
@space-md: 16px;
@space-lg: 24px;
@space-xl: 32px;@radius-sm: 6px; // 小组件
@radius-md: 8px; // 按钮、输入框
@radius-lg: 12px; // 卡片
@radius-xl: 16px; // 大卡片// 从原来过重的 box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.5)
// 改为轻量化设计:
@shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
@shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
@shadow-card: @shadow-sm;
@shadow-card-hover: @shadow-md;改动前:
<Sider width="88px" className={styles.siderStyle}>改动后:
<Sider width="240px" className={styles.siderStyle}>视觉效果:
- ✅ 侧边栏宽度更合理
- ✅ 白色背景 + 右侧边框
- ✅ 轻阴影增加层次感
改动前:
- 纵向布局(图标上、文字下)
- 宽度 72px,高度 56px
- 激活状态只改变颜色
改动后:
- 横向布局(图标 + 文字)
- 宽度 100%,高度 48px
- 激活状态:
- 左侧 3px 蓝色指示条
- 浅蓝色背景 (#eff6ff)
- 深蓝色文字 (#2563eb)
CSS 关键改进:
.ragItemActive {
background: @brand-primary-50;
color: @brand-primary-600;
&::before {
content: '';
position: absolute;
left: 0;
width: 3px;
height: 24px;
background: @brand-primary-600;
}
}改动前:
background: #1570ef; // 深蓝色改动后:
background: @brand-primary-300; // 浅蓝色
&:hover { background: @brand-primary-500; }虽然我已完成核心布局改造,但以下页面组件仍需进一步优化:
现有问题:
- 阴影过重:
box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.5) - 背景色混乱:
#f8f8f8,#f8fafc,rgba(59, 130, 246, 0.08) - 卡片间距不统一
改造建议:
// web/src/pages/chat/index.less
@import '../../theme/design-tokens.less';
.chatWrapper {
.chatAppCard {
background: @color-bg-primary;
border: 1px solid @color-border-default;
border-radius: @card-border-radius;
box-shadow: @shadow-card;
transition: all @transition-base;
&:hover {
box-shadow: @shadow-card-hover;
border-color: @brand-primary-200;
}
}
.chatAppCardSelected {
background: @brand-primary-50;
border-color: @brand-primary-500;
box-shadow: @shadow-md;
}
}现有问题:
- 添加卡片使用背景图片而非 CSS
- 卡片样式不够现代
- 缺少 hover 交互
改造建议:
// web/src/pages/knowledge/index.less
.knowledgeCardContainer {
.addCard {
width: 293px;
height: 138px;
background: linear-gradient(135deg, @brand-primary-50 0%, @brand-primary-100 100%);
border: 2px dashed @brand-primary-300;
border-radius: @card-border-radius;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all @transition-base;
&:hover {
border-color: @brand-primary-500;
background: linear-gradient(135deg, @brand-primary-100 0%, @brand-primary-200 100%);
transform: translateY(-2px);
box-shadow: @shadow-card-hover;
}
}
}改造建议:
// 使用设计 Token
.fileManagerWrapper {
:global(.ant-table) {
background: @color-bg-primary;
border-radius: @radius-lg;
overflow: hidden;
box-shadow: @shadow-card;
thead > tr > th {
background: @neutral-50;
border-bottom: 1px solid @color-border-default;
color: @color-text-secondary;
font-weight: @font-weight-semibold;
}
tbody > tr {
transition: background @transition-base;
&:hover {
background: @neutral-50;
}
}
}
}所有新增或修改的样式文件应导入设计 Token:
// 在任何 .less 文件开头添加
@import '../../theme/design-tokens.less'; // 根据文件路径调整层级
// 然后使用 Token
.myComponent {
color: @color-text-primary;
background: @color-bg-primary;
padding: @space-md;
border-radius: @radius-lg;
box-shadow: @shadow-card;
}| 用途 | Token | 值 |
|---|---|---|
| 主色 | @brand-primary-500 |
#3b82f6 |
| 主文本 | @color-text-primary |
#0f172a |
| 次文本 | @color-text-secondary |
#475569 |
| 背景 | @color-bg-primary |
#ffffff |
| 页面背景 | @neutral-50 |
#f8fafc |
| 边框 | @color-border-default |
#e2e8f0 |
| 卡片阴影 | @shadow-card |
轻量 |
| 圆角 | @radius-lg |
12px |
| 间距 | @space-md |
16px |
- 使用设计 Token,杜绝硬编码颜色
- 统一圆角、间距、阴影规格
- 避免过重阴影
- 减少视觉噪音
- 留白适当
- 专业、严谨、高效
- 清晰的信息层级
- 易用的交互反馈
- 使用 Flexbox/Grid 布局
- 避免固定像素宽度
- 适配不同屏幕尺寸
web/src/
├── theme/
│ ├── design-tokens.less # ✅ 新增:设计 Token
│ ├── theme.ts # ✅ 更新:Ant Design 主题
│ └── vars.less # ✅ 更新:兼容性变量
├── less/
│ └── variable.less # ✅ 更新:引用 Token
├── layouts/
│ ├── index.tsx # ✅ 更新:侧边栏宽度 240px
│ ├── index.less # ✅ 重写:使用 Token
│ └── components/header/
│ └── index.less # ✅ 重写:专业菜单样式
└── pages/
├── chat/
│ └── index.less # ⏳ 待改造
├── knowledge/
│ └── index.less # ⏳ 待改造
├── search/
│ └── index.less # ⏳ 待改造
├── agent/
│ └── index.less # ⏳ 待改造
└── file-manager/
└── index.less # ⏳ 待改造
对于需要更新的现有组件,请按以下步骤操作:
// 文件开头添加
@import '../../theme/design-tokens.less';替换前:
.myCard {
background: #f8f8f8;
color: #0d1c2e;
border: 1px solid #d9d9d9;
box-shadow: 10px 10px 5px 0px rgba(0, 0, 0, 0.5);
}替换后:
.myCard {
background: @color-bg-primary;
color: @color-text-primary;
border: 1px solid @color-border-default;
box-shadow: @shadow-card;
}// 替换前
padding: 16px 24px;
margin-bottom: 20px;
// 替换后
padding: @space-md @space-lg;
margin-bottom: @space-lg;// 替换前
border-radius: 8px;
// 替换后
border-radius: @radius-lg;改造前:
- 宽度:88px(过窄)
- 布局:纵向(图标上、文字下)
- 激活状态:仅颜色变化
- 背景:灰色 (#f8fafc)
改造后:
- 宽度:240px(符合 2B 标准)
- 布局:横向(图标 + 文字)
- 激活状态:左侧指示条 + 浅蓝背景 + 深蓝文字
- 背景:白色 + 右侧边框 + 轻阴影
改造前 (混乱):
- 主色:
#338AFF,#1570EF,#3b82f6 - 灰色:
#64748b,#475569,#6b7280,#999999
改造后 (统一):
- 主色:
@brand-primary-500(#3b82f6) - 灰色:
@neutral-*系列(50-900 共 9 级)
-
Less 编译
- 确保 Less 编译器支持嵌套
@import - 如遇循环依赖,检查
vars.less中的变量定义
- 确保 Less 编译器支持嵌套
-
Ant Design 主题
- 部分 Ant Design 组件可能需要全局样式覆盖
- 已在
layouts/index.less中添加关键覆盖
-
浏览器兼容性
- CSS 变量在 IE11 不支持
- 建议最低浏览器版本:Chrome 88+, Safari 14+, Firefox 78+
UI 改造是否成功,可从以下几个维度验收:
- 所有蓝色使用品牌色系
- 灰色使用中性色系
- 无硬编码颜色值
- 侧边栏宽度 240px
- 菜单项高度 48px
- 间距使用 8px 基准
- Hover 状态平滑过渡
- 激活状态明显区分
- 点击有视觉反馈
- 阴影轻量化
- 圆角统一
- 整体简洁大方
如有问题,请参考:
- 设计 Token 文档:
web/src/theme/design-tokens.less中的注释 - 迁移示例:本文档"迁移清单"章节
- GitHub Issues
改造完成时间: 2025-10-18 设计师: Claude (基于 2B 软件标准) 开发状态: ✅ 核心完成,⏳ 页面待优化