# Ant Design（ANTD）设计规范

> 本文档汇总 **Ant Design 官方设计理念** 与 **在本仓库（ONE-OS / web 端原型）中的落地约定**。  
> 官方参考：[设计价值观](https://ant.design/docs/spec/values-cn) · [设计模式](https://ant.design/docs/spec/overview-cn) · [组件总览](https://ant.design/components/overview-cn)

主题内更细的 Token 与主题说明见：`axhub-make/src/themes/antd-new/DESIGN.md`。

---

## 一、产品定位与适用场景

Ant Design 面向 **企业级中后台**：数据密集、流程复杂、角色多样。目标是 **降低协作成本、保证一致性、提升交付效率**。

| 适合 | 需谨慎 |
|------|--------|
| 管理后台、运营台、审批与报表 | 强品牌 C 端营销页（需额外视觉体系） |
| 表单、表格、筛选、仪表盘 | 与另一套 UI 库混用（易产生样式与交互冲突） |
| 内部工具、B 端 SaaS | 极简移动端 H5（可评估 [Ant Design Mobile](https://mobile.ant.design)） |

---

## 二、四大设计价值观（官方）

设计语言层面的「为什么这样设计」，实现组件与文档时应与之对齐。

### 1. 自然（Natural）

- 感知、行为符合用户习惯，减少刻意学习与记忆。  
- 文案、隐喻贴近真实业务场景，避免生造概念。  
- 动效克制，用于说明状态与空间关系，而非炫技。

### 2. 确定性（Certainty）

- **设计确定性**：模式可预期（同类操作用同类组件与布局）。  
- **实现确定性**：设计 Token、组件 API 稳定，减少「同一需求多种写法」。  
- **用户心智确定性**：同一语义的按钮、颜色、反馈在全站一致。

### 3. 意义感（Meaning）

- 每个元素应有清晰目的：为何展示、为谁服务、与上下游任务的关系。  
- 避免为填满版面而堆组件；信息层级服务于 **主任务路径**。

### 4. 生长感（Growth）

- 系统随业务扩展：模块、主题、国际化可演进。  
- 优先使用 Token / `ConfigProvider` 扩展，而非大量硬编码覆盖组件内部样式。

---

## 三、页面与交互层面的设计原则（落地检查清单）

在画原型或写页面时，可逐条对照（与 Arco 等体系表述不同，但可并行使用）。

| 原则 | 要求 |
|------|------|
| **Stay on the Page** | 能在当前页完成的，尽量不跳转；必要时用抽屉、步骤条、标签页拆分。 |
| **React Immediately** | 点击、提交、加载、成功/失败要有即时可见反馈（按钮 loading、表格骨架屏、`message` 等）。 |
| **Provide an Invitation** | 主操作、可编辑区域通过主次按钮、留白与分组被自然发现。 |
| **Make it Direct** | 能直接点的不要藏三层菜单；表格行内操作与批量操作语义区分清楚。 |
| **Keep it Lightweight** | 同一屏信息密度可控；复杂筛选可折叠或分步；避免无意义装饰。 |
| **Use Transition** | 展开/收起、抽屉、模态出现与消失使用组件自带动效，保持节奏一致。 |

---

## 四、视觉与 Token（摘要）

详细数值与分类见 `axhub-make/src/themes/antd-new/DESIGN.md`。此处仅列 **命名与用法约定**。

### 1. 色彩语义

- **主色（Primary）**：主按钮、链接、关键选中态。  
- **功能色**：Success / Warning / Error / Info 仅表达对应语义，不混用作装饰。  
- **中性色**：标题、正文、次要说明、边框、背景层级与 antd 文字色阶梯对齐。

### 2. 间距与布局

- 以 **4px 基准网格** 思考间距；列表、表单优先用 `Space`、`Row`/`Col` 而非零散 `margin`。  
- 使用 **24 栅格** 做响应式分栏；断点含义与 antd 文档一致。

### 3. 字体与层级

- 正文默认 **14px**；标题用 `Typography.Title` 层级，避免随意放大字号破坏韵律。  
- 辅助说明可用 **12px** 次要色，但需保证对比度与可读性。

### 4. 圆角与层级

- 控件与卡片圆角与主题 Token 一致；弹层类（Modal、Dropdown）阴影强于内容区卡片，体现 **Z 轴层级**。

---

## 五、组件选用与反馈层级

### 1. 反馈方式选择

| 场景 | 推荐 |
|------|------|
| 操作成功/失败一句话 | `message` |
| 需稍后查看或带标题的通告 | `notification` |
| 需用户明确确认或中断流程 | `Modal` / `Popconfirm` |
| 复杂表单、多步编辑、详情+编辑 | `Drawer` 或独立页 |
| 行内轻确认 | `Popconfirm` |

原则：**能不打断主流程就不弹 Modal**；全局提示不要过于频繁堆叠。

### 2. 表单

- 使用 **Form** 管理字段、校验与提交；标签、必填星号、错误信息与 antd 默认模式一致。  
- 长表单：分组（`Divider` / 卡片）、分步（`Steps`）或分 Tab，避免单屏过长。

### 3. 表格

- **小数据**：常规分页即可。  
- **大数据**：虚拟滚动、列固定、合理 `scroll`；避免无分页的一次性超大渲染。  
- 操作列：主次分明（主操作用 `Button type="link"` 或主色按钮，危险操作用 `danger` + 二次确认）。

### 4. 按钮语义

| 类型 | 用途 |
|------|------|
| `primary` | 每区块/每弹窗 **唯一** 主路径提交或强引导 |
| `default` | 次要操作 |
| `dashed` | 添加、可选扩展 |
| `link` | 表格行内、弱干扰文字链 |
| `text` | 工具栏内轻量操作 |

---

## 六、无障碍与国际化（建议）

- **键盘**：焦点顺序合理，Modal 打开后焦点 trap；可交互元素可被 Tab 聚焦。  
- **颜色**：不单独依赖颜色传达状态（配合图标、文案）。  
- **文案**：按钮与标题用 **动词或动宾结构**（如「设为已读」「导出报表」）；错误信息说明原因与下一步。  
- **国际化**：面向多语言时避免写死拼接顺序，使用参数化文案；日期数字格式交给 `ConfigProvider` locale。

---

## 七、在本项目中的开发约定（web 端 JSX 原型）

1. **入口**：通过 `window.antd` 取组件时，保持与官方 API 一致，避免魔改组件封装导致文档与代码脱节。  
2. **主题**：全局主题以 `ConfigProvider` + Token 为准；局部特殊色尽量与 Token 映射一致，减少 `#` 硬编码。  
3. **样式覆盖**：优先 `className` + 外层布局控制；避免对 `.ant-*` 大段 `!important`。  
4. **一致性**：同一业务场景（如列表筛选、详情抽屉）在不同页面复用相同结构与组件组合，便于用户形成习惯。

---

## 八、文档与协作

- 新增复杂页：在原型或 PR 中说明 **主任务、信息架构、关键反馈** 与本文档哪几条原则对应。  
- 与设计师对齐时：以 antd 组件名为沟通基准，减少「自定义组件名」与实现不一致。

---

## 九、延伸阅读

- [定制主题](https://ant.design/docs/react/customize-theme-cn)  
- [从 v4 到 v5](https://ant.design/docs/react/migration-v5-cn)（若仓库存在混版本引用）  
- 仓库内主题细则：`axhub-make/src/themes/antd-new/DESIGN.md`
