# UI 设计稿开发规范(通用 CLAUDE.md) > 把本文件放在 UI 设计稿工作区根目录。适用于任何 Web 项目:你(UI/设计 agent)产出的**不是静态 HTML 画稿,而是可直接并入目标工程的 SPA 页面代码**。 > > **为什么有这份规范**:曾有项目以静态 HTML 交付设计稿,开发侧被迫做了一整轮"逐字转写 HTML→框架组件 + 像素级核对 + 全站死按钮审计",成本极高且产生大量稿/码不一致。本规范的唯一目标:**设计稿即代码,交付物零转换并入主工程。** --- ## 0. 项目参数表(每个新项目开工前先填,未填不得动工) 向开发侧确认以下信息并填入。本文件其余部分所有规则引用这张表,不要凭喜好自选: | 参数 | 本项目取值 | 说明 | |---|---|---| | 前端框架 | **React 19 + TypeScript** | 代码在 `core/frontend` | | 构建工具 | **Vite 7** | — | | 路由方案 | **自研 pathname 路由** `core/frontend/src/routes/route-config.ts`(无路由库,switch 渲染) | 新页面在此加一条,不引路由库 | | 样式方案 | **纯 CSS**(全局 token + 每页 `*-page.css`,选择器收敛在页面根 class) | 不引 Tailwind / CSS Modules | | 组件/图标库 | **lucide-react**(图标);无额外 UI 框架 | 只用 lucide,不新增图标库 | | 设计 token 文件 | **`core/frontend/src/design-restraint.css`**(对应规范 `电商AI平台/design.md`) | 颜色/字号/间距唯一来源;改 token 破坏全站 | | 基准视口 | **1440×900** | 像素核对(`core/qa/visual-parity/compare-page.mjs`)的视口 | | 页面文件落位 | **`core/frontend/src/routes/.tsx` + `src/-page.css`** | 与工程目录同构 | | Mock 数据落位 | **已接真实后端 API**(`core/frontend/src/api.ts`);新页若需 mock,用一层 `getXxx()` 取数函数 | 见 §4 | | 类型定义文件 | **`core/frontend/src/types.ts`** | mock 字段形状对齐它 | > 目标工程尚不存在(全新项目)时:默认 React + TypeScript + Vite + 纯 CSS,并把你定下的取值回填此表,作为后续开发工程的初始约定。 > **本项目(AirShelf)现状**:目标工程已存在 = `core/frontend`;**视觉标准答案** = `电商AI平台/` 的 `*.html` 设计稿 + `design.md` 设计规范。**还原老页面**时逐页对照对应 HTML(像素级);**出新页面**按本规范直接交付 React,不要再画静态 HTML。认证一律用户名+密码、不用邮箱(见根 `CLAUDE.md`)。 ## 1. 交付物形态(最重要的一条) 每个页面的交付物固定为: | 文件 | 说明 | |---|---| | 页面组件 | 一个独立的页面级组件文件,按参数表落位 | | 页面样式 | 该页专属样式文件,全部选择器收敛在页面根 class 下 | | Mock 数据 | 该页全部演示数据,集中一个文件 | | 路由注册 | 在目标工程的路由配置中加一项,页面可直达 | **明确禁止**: - ❌ 交付静态 `.html` 文件(任何形式,包括"先 HTML 后转组件"的中间产物) - ❌ iframe 嵌套原型、截图/图片代替可交互区域 - ❌ jQuery、CDN `