全站布局重设计总纲
v2 重估(2026-08-02):对照 vision / ADR-0012 / 后端能力清单复核后,分波顺序已改(见「分波」节)。核心修正:能力暴露与空壳清除优先于表现层密度抛光;Pro 清零从「波次驱动指标」降为「收尾卫生」。能力对照详表见 product-capability-map.md。
读者:执行 UI 切片的实现者(Auto)。回答一个问题:所有现存页面的布局如何统一抬到「一流产品感」,以及按什么顺序做。 约束:antd 5 + umi(ADR-0005 / ADR-0014);Pro Strangler 只摘不加深;视觉 tokens 唯一事实源
frontend/src/theme/tokens.ts+theme/css-vars.less(见 ui-home-model-redesign.md §视觉方向,本文不重复定义色板);落地页深色品牌门面不动;Home 为亮色工作台。 关系:本文是全站总纲;Home/模型页的区块级 IA 细节仍以ui-home-model-redesign.md为准,本文只引用不重复。
一套系统,两种曝光
| 世界 | 页面 | 视觉 |
|---|---|---|
| 门面(深色品牌) | 落地页 /、登录/注册 | Syne/IBM Plex 字族 + 深色构图,品牌优先 |
| 工作台(亮色系统) | Home、项目列表、设计器 chrome、版本/设置/账号、数据源、分享、404 | tokens 亮色系统,antd Layout/Table/Form 为骨架 |
跨世界的桥:登录/注册页左半用落地页深色品牌面板、右半白色表单——一次深色→亮色的过渡,把「门面」与「工作台」缝在一屏里。
布局模式目录(全站只允许这三种壳)
- 品牌壳(Brand Shell):无导航 chrome,内容居中/分栏。用于落地页、登录/注册、404/403。
- 工作台壳(Workspace Shell):顶栏 64px(
--erd-chrome-header-h;logo + 主导航 + 右侧用户区)+ 内容区max-width: 1200px居中 + 页脚一行版权。用于 Home、dataModels、project/*、databaseConfig、account/settings。实现 =HomeLayout+ 共享layouts/erd-chrome.less(GroupLayout 同 chrome;无全页 Watermark)。 - 设计器壳(Designer Shell):顶栏 64px(同 chrome)+ 左树 320px + tabs ~28px(
--erd-tabs-h,原 40,ADR-0016 密度)+ flex 画布。用于/design/*(含 version / import / export / setting 标签页)。实现 =DesignLayout(antd Layout,W1 已摘 Pro;版本号在「更多」,无水印 clutter)。
禁止发明第四种壳;禁止回到 ProLayout/PageContainer 包裹任何页面(ADR-0014)。
密度规范(全站统一)
- 4pt 网格;页面左右 padding 24,区块间距 16/24;卡片内边距 16/20
- 表格:
size="middle",行高由 antd token 控制,禁止自定义行高魔法数 - 表单:
layout="vertical"(设置类)或弹窗内labelCol 6;标签 13px,必填星号 brand 色 - 列表行高 56(项目列表)/ 48(数据源表格);树行高 32
- 字阶沿用 tokens 简报:12/13/14/16/20/28/40,统计数字一律 ink-900、无彩虹色
导航模式
- 全局:工作台壳顶栏一级导航(首页 / 项目 / 数据源配置 / 账号),当前项 brand 下划线 2px,悬停 ink-900
- 设计器内(单一 chrome):左 logo→
/home+ 项目名 ▾(aria-label=项目菜单:全部项目 → 最近项目(最多 5 条,当前项 ✓,点其它项切/design/table/model?projectId=) → 导入·导出·设置弹层,itemsAPI + 子弹外置,子菜单 click 且同时只开一个);中主 tabs 仅 模型 | 版本(版本含 sider 子导航);右 SaveStatus / 保存版本 / presence / 分享 / 我的工单·待审批·通知(/design/table/version/order|approval、/project/notice)/⋯(公众号·GitHub·版本号)/ 用户。导入·导出·设置页仍可深链,不占顶栏 - 层级收口:项目列表卡片整卡
<Link>直达设计器;设计器内切项目走 ▾「最近项目」;返回列表走「全部项目」/ logo,不新增「返回」按钮
空态规范(每页一句话 + 一个主 CTA)
| 页面 | 空态 |
|---|---|
| Home 项目区 | 插画 + 「新建模型」主按钮 + 「从示例开始」文字链 |
| dataModels(各 tab) | 「还没有项目」+ 「新建项目」主按钮;团队 tab 附「去创建团队」文字链 |
| databaseConfig | 「还没有数据源」+ 「新建数据源」主按钮 |
| 设计器画布 | ER 剪影插画 + 「新建第一张表」主按钮 + 「导入 DBML」次按钮 + 「从数据源逆向」文字链(空态隐藏 MiniMap);导入后直开关系图并 fitView |
| version 列表 | 「还没有版本」+ 「保存第一个版本」主按钮(与顶栏入口同一动作) |
| share(链接失效) | AuthBrandShell + 「打开示例 demo」主按钮 + 「返回首页」;空模块/无模型 → ER 剪影 + 同 CTA |
| 404 / 403 | AuthBrandShell + 「打开示例 demo」主按钮 + 「返回首页」(与分享失效门同构) |
统一用品牌壳 / ER 剪影空态;插画沿用现有资产;空态 CTA 必须可达(getByRole('button', { name })) 。禁裸 antd Result 做品牌门。
逐页方案
落地页 /(品牌壳 · 不动构图)
- 保持深色全幅品牌构图与
landing-hero.jpg(roadmap P5 已定) - ✅ 落地页 token 同源(2026-08-03):
pages/landing/index.less清@ink/@accent/#4aa3c8等魔法色 →--erd-*+color-mix;主 CTA 改 brand 红;三柱点缀 success/brand/warning;字族走--erd-font-* - 页脚一行版权,链接收进「资源」列
登录 / 注册(品牌壳 · W5)
- ✅ W5 切片 4(2026-08-03):
AuthBrandShell左 40% 暗色品牌面板(--erd-ink-900渐变 + logo/叙事/ErdEmptyDiagram缩略 +「打开演示」文字链)+ 右 60% 白色 antdForm;清bg2.png/#1677FF硬编码;注册页同构;redirect闭环不变
Home /home(工作台壳 · W2,删除优先 )
- 区块级 IA 见
ui-home-model-redesign.md§Home 信息架构(hero CTA 簇 + 次级水平链 + 全宽 3 列项目网格;无快速操作墙;公告按新鲜度可隐);W2 只做删除:重复统计卡(「项目概览」)、slogan 轮转、components/Radar/、_mock.ts、未渲染的Pieconfig 与@ant-design/charts死 import - ✅ S2 Home hero(2026-08-02):主 CTA「继续上次建模」直达最近项目画布 + 安静三指标;快捷链改 tokens(非 W5 表现层)
- 网格 hover 升层等密度细节降为顺手活,不单列切片;禁止为 Home 新增额外视觉设计工时(S3 网格另片)
- 验证锚点:
getByRole('button', { name: '继续上次建模' })、home-link-*testId
项目列表 dataModels + project/*(工作台壳 · W4)
- 现状:
ProList(dataModels / project/person / project/recent / project/group)卡片列表,avatar:'/logo.svg'占位,操作按钮堆在actions - 目标:antd
List+ 行内布局:左 logo 32px + 项目名(16 strong,整行<Link>直达设计器)+ 类型 Tag(个人 ink / 团队 teal)+ 描述一行截 断 + 右「更新于 x 前」+ 悬停显行尾操作(重命名/复制/设置/删除收进Dropdown) - tab(最近/个人/团队)用 antd
Tabs置内容区头部;排序Select右对齐;分页沿用 - 摘全部
ProList;删除项目二次确认沿用(已有) - project/group 子页(成员/权限/设置)同波顺带:
PageContainer→ 工作台壳内容区 + antdCard分节
数据源配置 databaseConfig(工作台壳 · W4)
- 现状:
PageContainer+ProTable,功能已完整(状态 Badge / ping / Drawer 表单 / 批量删) - 目标:摘
PageContainer→ 工作台壳;ProTable→ antdTable(columns 平移,工具条改为标题行 + 右侧「新建数据源」主按钮 + 搜索Input.Search);Drawer 表单内的ProForm*留到 W4 统一摘 - 列宽用
Table默认自适应,禁止定死 px 总宽