@q1travel/design-system 0.17.1 → 0.17.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -23
- package/dist-pkg/design-system.js +4547 -4512
- package/dist-pkg/style.css +1 -30
- package/package.json +11 -1
package/README.md
CHANGED
|
@@ -1,20 +1,93 @@
|
|
|
1
1
|
# q1travel Design System
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@q1travel/design-system)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`@q1travel/design-system` 提供一套 React 组件、设计 token 与设计契约,用于构建一致、可访问、支持明暗主题的产品界面。
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## 文档
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
完整的组件指南、设计基础与使用示例见 [design.q1lx.com](https://design.q1lx.com)。
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
11
|
+
## 环境要求
|
|
12
|
+
|
|
13
|
+
- React 19 与 React DOM 19(peerDependency)
|
|
14
|
+
- 支持 ES Module 的构建工具(如 Vite)
|
|
15
|
+
- 使用 `q1-design` CLI 需要 Node.js 22+
|
|
16
|
+
|
|
17
|
+
## 安装
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install @q1travel/design-system
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 使用
|
|
24
|
+
|
|
25
|
+
在应用入口引入样式表,然后按需导入组件:
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import '@q1travel/design-system/style.css';
|
|
29
|
+
import { Button } from '@q1travel/design-system';
|
|
30
|
+
|
|
31
|
+
export function SaveAction() {
|
|
32
|
+
return <Button variant="primary">保存</Button>;
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`style.css` 已包含全部设计 token 与组件样式。如果只需要设计 token(例如为自有组件取色、取间距),可以单独引入:
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import '@q1travel/design-system/tokens.css';
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
所有 token 以 `--q1-*` 命名,例如 `var(--q1-color-gray-1000)`。
|
|
43
|
+
|
|
44
|
+
### 主题
|
|
45
|
+
|
|
46
|
+
组件默认使用浅色主题。在根元素上设置 `data-theme="dark"` 即可切换为深色主题:
|
|
47
|
+
|
|
48
|
+
```html
|
|
49
|
+
<html data-theme="dark">
|
|
50
|
+
```
|
|
16
51
|
|
|
17
|
-
|
|
52
|
+
### 反馈提示
|
|
53
|
+
|
|
54
|
+
使用 `useToast` 前,需要在应用根部包裹 `ToastProvider`:
|
|
55
|
+
|
|
56
|
+
```tsx
|
|
57
|
+
import { ToastProvider } from '@q1travel/design-system';
|
|
58
|
+
|
|
59
|
+
root.render(
|
|
60
|
+
<ToastProvider>
|
|
61
|
+
<App />
|
|
62
|
+
</ToastProvider>,
|
|
63
|
+
);
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## CLI
|
|
67
|
+
|
|
68
|
+
包内附带 `q1-design` 命令行工具,用于查询组件 API 并检查样式用法:
|
|
69
|
+
|
|
70
|
+
| 命令 | 说明 |
|
|
71
|
+
| --- | --- |
|
|
72
|
+
| `npx q1-design ls` | 列出包内提供的组件与 hook |
|
|
73
|
+
| `npx q1-design doc <组件名>` | 打印组件的公共 API |
|
|
74
|
+
| `npx q1-design lint [路径...]` | 按 `Q1-DS-*` 规则检查样式用法,默认扫描 `src` |
|
|
75
|
+
| `npx q1-design lint --diff <base-ref>` | 只检查相对 `base-ref` 有改动的文件 |
|
|
76
|
+
| `npx q1-design overrides [路径...]` | 统计对组件外观的 `className` 覆写 |
|
|
77
|
+
| `npx q1-design sync` | 将设计契约与 AI 编码指南同步为项目内的只读缓存 |
|
|
78
|
+
| `npx q1-design verify` | 校验缓存未被修改且与已安装版本一致 |
|
|
79
|
+
|
|
80
|
+
## 设计契约与 AI 编码指南
|
|
81
|
+
|
|
82
|
+
包内随附设计契约(`contracts/*.md`)与 product-design 编码指南(`.agents/`),可供 AI 编码助手读取,使生成的界面遵循同一套 token 与组件规范。契约文件通过 `@q1travel/design-system/contracts/*` 路径导出,也可以用 `npx q1-design sync` 同步到项目中。
|
|
83
|
+
|
|
84
|
+
## 版本
|
|
85
|
+
|
|
86
|
+
历史版本见 npm 的 [Versions](https://www.npmjs.com/package/@q1travel/design-system?activeTab=versions) 页。
|
|
87
|
+
|
|
88
|
+
## 参与开发
|
|
89
|
+
|
|
90
|
+
以下内容面向本仓库的贡献者。
|
|
18
91
|
|
|
19
92
|
前置要求:Node.js 22+(CI 基线 22)与 npm(依赖锁定在 `package-lock.json`);运行 `check:browser` 需要本机 Chrome(可用 `CHROME_PATH` 指定)。`check:browser` 在本地与 CI 都默认使用 `--headless=new`,不探测 TTY 或 `DISPLAY`;只有显式设置 `Q1_DESIGN_BROWSER_HEADLESS=false` 才切换到 headed 模式。
|
|
20
93
|
|
|
@@ -23,7 +96,17 @@ npm install
|
|
|
23
96
|
npm run dev
|
|
24
97
|
```
|
|
25
98
|
|
|
26
|
-
|
|
99
|
+
**技术栈**:React 19 · TypeScript · Vite 7(文档站 / 库双构建管线)· lucide-react · npm
|
|
100
|
+
|
|
101
|
+
### Sources
|
|
102
|
+
|
|
103
|
+
- Source contracts(设计契约源,canonical):`contracts/design.md`、`contracts/design.dark.md`、`contracts/token-naming.md`、`contracts/icon-system.md`、`contracts/button-api-compatibility.md`、`contracts/interface-guidelines.md`、`contracts/design-engineering-principles.md`、`contracts/implementation-map.md`、`contracts/overlay-foundation.md`,以及迁移契约 `contracts/context-contrast-migration.md`、`contracts/status-chip-badge-migration.md`、`contracts/pagination-migration.md`、`contracts/table-migration.md`、`contracts/overlay-shadow-migration.md`。独立 HTML 文档的有界 class 词汇表源为 `contracts/design.css`。
|
|
104
|
+
- Generated mirrors(生成镜像,勿手改):`public/design.md`、`public/design.dark.md` 由 `scripts/sync-design-contracts.mjs` 从契约源逐字节复制;`public/design.css` 由 `scripts/build-design-css.mjs` 把两份契约 frontmatter 的取值注入 `contracts/design.css` 的类词汇后生成,因而自足、可被独立 HTML 页面直接加载。
|
|
105
|
+
- Runtime tokens:`src/styles/tokens.css`(canonical `--q1-*`,仅 `:root` 与 `:root[data-theme='dark']` 两个扁平 selector)。
|
|
106
|
+
- 发布记录:`contracts/releases/`(仅存于仓库,不进 npm 包)。
|
|
107
|
+
- npm 发布:版本 tag 触发 GitHub Actions OIDC 免令牌发布,详见 `docs/npm-release.md`。
|
|
108
|
+
|
|
109
|
+
### Available Scripts
|
|
27
110
|
|
|
28
111
|
| 命令 | 用途 |
|
|
29
112
|
| --- | --- |
|
|
@@ -34,15 +117,15 @@ npm run dev
|
|
|
34
117
|
| `npm run check:shell` | 结构与源码契约断言 + token 包检查 + 发布溯源检查 |
|
|
35
118
|
| `npm run check:browser` | 基于 CDP 的浏览器行为契约(含 StrictMode 前置轮) |
|
|
36
119
|
| `npm run check:package-api` | 已构建包的声明与运行时 API + 组件契约 `node --test` 套件 |
|
|
37
|
-
| `npm run check:release-provenance` |
|
|
38
|
-
| `npm run check:release-sync` | 发布后 registry
|
|
120
|
+
| `npm run check:release-provenance` | 发布记录 vs `CHANGELOG.md`、origin tag 与 npm registry |
|
|
121
|
+
| `npm run check:release-sync` | 发布后 registry 完整性校验与依赖更新通知脚本测试 |
|
|
39
122
|
| `npm run release:verify -- <tarball>` | 只校验 workflow tarball 与 npm registry 完整性 |
|
|
40
|
-
| `npm run release:sync -- <tarball>` | 校验 registry
|
|
123
|
+
| `npm run release:sync -- <tarball>` | 校验 registry 后发送依赖更新通知;不具备发布能力 |
|
|
41
124
|
| `npm run build:pkg` | 库构建(产物 `dist-pkg/`)+ CSS 拼装 + 包 API 检查(`prepack` 同款) |
|
|
42
125
|
|
|
43
126
|
本仓没有独立的 test / lint script——规范由 `scripts/` 下的契约门禁脚本守护。
|
|
44
127
|
|
|
45
|
-
|
|
128
|
+
### Project Structure
|
|
46
129
|
|
|
47
130
|
```
|
|
48
131
|
src/components/ui/ npm 包组件源(入口 index.ts,统一公共导出面)
|
|
@@ -50,20 +133,19 @@ src/components/ docs/、layout/、brand/ 文档站结构组件
|
|
|
50
133
|
src/pages/ 文档站页面(组件示例编排)
|
|
51
134
|
src/styles/ tokens.css、foundations.css、components.css 等分桶样式
|
|
52
135
|
src/browser-fixtures/ check:browser 的行为契约 fixture
|
|
53
|
-
contracts/ 设计契约源 + releases/
|
|
136
|
+
contracts/ 设计契约源 + releases/ 发布记录
|
|
54
137
|
public/ 契约镜像与品牌/字体/图标静态资产
|
|
55
138
|
scripts/ 契约门禁与构建脚本(check-shell / check-browser / …)
|
|
56
|
-
bin/ q1-design CLI
|
|
139
|
+
bin/ q1-design CLI(ls / doc / sync / verify / lint / eval / overrides)
|
|
57
140
|
tooling/ 规则清单(Q1-DS-*)与 eval fixture
|
|
58
141
|
.agents/ 随包分发的 product-design skill
|
|
59
|
-
docs/ review/
|
|
142
|
+
docs/ review/ 架构说明、agent 规范、历史决策记录
|
|
60
143
|
```
|
|
61
144
|
|
|
62
|
-
|
|
145
|
+
### Documentation & AI Guidelines
|
|
63
146
|
|
|
64
|
-
-
|
|
65
|
-
- `docs/architecture.md` —
|
|
147
|
+
- AI 编码助手遵循根目录 `AGENTS.md`(命令速查、约束、工作闭环与知识索引);`CLAUDE.md` 仅为其薄包装。
|
|
148
|
+
- `docs/architecture.md` — 双构建管线、契约生成与消费模型、文档站托管与缓存策略、发布溯源链路。
|
|
66
149
|
- `docs/adr/template.md` — 新 ADR 从此模板开始;早期已接受决策存于 `review/decision-log/`。
|
|
67
|
-
- `docs/token-coverage-gaps.md` —
|
|
150
|
+
- `docs/token-coverage-gaps.md` — 尚未导出的 `--q1-*` 能力缺口登记(待决清单,非契约)。
|
|
68
151
|
- `docs/research/design-md-eval/` — design.md 有/无 对照评测:固定场景、确定性检查、修正队列(研究记录,非契约)。
|
|
69
|
-
- 下游消费方式:安装 `@q1travel/design-system` 后 import 组件与 `style.css` / `tokens.css`;`npx q1-design sync` 把包内 skill 与契约物化为只读缓存,`q1-design verify` 校验缓存未被改动,`q1-design lint` 执行 `Q1-DS-*` 机械规则;`q1-design ls` 列出随包组件,`q1-design doc <组件名>` 打印其公共 API(两者现推自随包的 `.d.ts`,不另存清单);`q1-design overrides` 统计并分类消费方对组件外观的覆写。
|