pda-kit-mcp-server 2.0.1
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 +107 -0
- package/bin/pda-kit-mcp.js +35 -0
- package/dist/file-reader.d.ts +83 -0
- package/dist/file-reader.d.ts.map +1 -0
- package/dist/file-reader.js +170 -0
- package/dist/file-reader.js.map +1 -0
- package/dist/http-entry.d.ts +12 -0
- package/dist/http-entry.d.ts.map +1 -0
- package/dist/http-entry.js +149 -0
- package/dist/http-entry.js.map +1 -0
- package/dist/http-server.d.ts +5 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +114 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +37 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +52 -0
- package/dist/paths.js.map +1 -0
- package/dist/server.d.ts +12 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +308 -0
- package/dist/server.js.map +1 -0
- package/dist/stdio-server.d.ts +8 -0
- package/dist/stdio-server.d.ts.map +1 -0
- package/dist/stdio-server.js +83 -0
- package/dist/stdio-server.js.map +1 -0
- package/dist/tools/generate-component.d.ts +54 -0
- package/dist/tools/generate-component.d.ts.map +1 -0
- package/dist/tools/generate-component.js +80 -0
- package/dist/tools/generate-component.js.map +1 -0
- package/dist/tools/get-component-spec.d.ts +70 -0
- package/dist/tools/get-component-spec.d.ts.map +1 -0
- package/dist/tools/get-component-spec.js +95 -0
- package/dist/tools/get-component-spec.js.map +1 -0
- package/dist/tools/get-global-rules.d.ts +42 -0
- package/dist/tools/get-global-rules.d.ts.map +1 -0
- package/dist/tools/get-global-rules.js +83 -0
- package/dist/tools/get-global-rules.js.map +1 -0
- package/dist/tools/list-components.d.ts +52 -0
- package/dist/tools/list-components.d.ts.map +1 -0
- package/dist/tools/list-components.js +104 -0
- package/dist/tools/list-components.js.map +1 -0
- package/dist/tools/search-components.d.ts +54 -0
- package/dist/tools/search-components.d.ts.map +1 -0
- package/dist/tools/search-components.js +124 -0
- package/dist/tools/search-components.js.map +1 -0
- package/dist/tools/validate-html.d.ts +43 -0
- package/dist/tools/validate-html.d.ts.map +1 -0
- package/dist/tools/validate-html.js +116 -0
- package/dist/tools/validate-html.js.map +1 -0
- package/package.json +59 -0
- package/spec-data/badge.md +461 -0
- package/spec-data/button.md +148 -0
- package/spec-data/camera.md +622 -0
- package/spec-data/dialog.md +419 -0
- package/spec-data/divider.md +208 -0
- package/spec-data/drawer.md +301 -0
- package/spec-data/empty-state.md +336 -0
- package/spec-data/home-page.md +352 -0
- package/spec-data/input-row.md +346 -0
- package/spec-data/layout-page.md +317 -0
- package/spec-data/list-item.md +128 -0
- package/spec-data/location-selector.md +630 -0
- package/spec-data/more-actions.md +427 -0
- package/spec-data/navbar.md +482 -0
- package/spec-data/photo-list.md +461 -0
- package/spec-data/picker-single.md +199 -0
- package/spec-data/picker.md +586 -0
- package/spec-data/scan-input.md +304 -0
- package/spec-data/section-heading.md +268 -0
- package/spec-data/selectable-list.md +331 -0
- package/spec-data/stepper.md +247 -0
- package/spec-data/tab-bar.md +254 -0
- package/spec-data/tab.md +349 -0
- package/spec-data/tag.md +363 -0
- package/spec-data/tooltip.md +202 -0
- package/spec-data/waybill-number.md +257 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: tab-bar
|
|
3
|
+
name: 底部标签栏
|
|
4
|
+
category: "导航/Navigation"
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
source: PDAKit-基础组件
|
|
7
|
+
source_url: https://mastergo.ky-tech.com.cn/goto/TXZpLs43
|
|
8
|
+
source_doc_id: 103417331857122
|
|
9
|
+
component_count: 5
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# 底部标签栏 Tab Bar
|
|
13
|
+
|
|
14
|
+
业务属性标签栏,底部固定展示,用于首页导航切换。**4 个栏目固定**,不可增删,每个栏目有选中/未选中两态。
|
|
15
|
+
|
|
16
|
+
> **颜色规则**:全部使用 Token(`--color-{色系}-{色阶}`),禁止 Hex。
|
|
17
|
+
> **字体**:PingFang SC,Semibold(`600`)。
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 组件总览
|
|
22
|
+
|
|
23
|
+
| 组件 | Key | 说明 |
|
|
24
|
+
|------|-----|------|
|
|
25
|
+
| 底部标签栏/组合 | `028-底部标签栏导航-组合` | 容器:白底 + 顶部 1px 分割线 + 4 项均分 |
|
|
26
|
+
| 底部标签栏/首页 | `026-底部标签栏导航-首页` | 标签项:首页 |
|
|
27
|
+
| 底部标签栏/任务 | `027-底部标签栏导航-任务` | 标签项:任务 |
|
|
28
|
+
| 底部标签栏/营地 | `023-底部标签栏导航-营地` | 标签项:营地 |
|
|
29
|
+
| 底部标签栏/我的 | `025-底部标签栏导航-我的` | 标签项:我的 |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 容器规格
|
|
34
|
+
|
|
35
|
+
| 属性 | 值 |
|
|
36
|
+
|------|------|
|
|
37
|
+
| 宽度 | `480px`(撑满父容器) |
|
|
38
|
+
| 高度 | `71px` |
|
|
39
|
+
| 背景 | `--color-grey-1`(`#FFFFFF`) |
|
|
40
|
+
| 布局 | 垂直排列(`flex-col`),内部分割线 + 标签行 |
|
|
41
|
+
| 顶部线条 | `1px` 高,`--color-black-2`(`#DDDDDD`),撑满宽度 |
|
|
42
|
+
| 标签行内边距 | `6px 40px`(上下 6px,左右 40px) |
|
|
43
|
+
| 标签分布 | `space-between`(4 项均分) |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 标签项规格
|
|
48
|
+
|
|
49
|
+
### 单个标签
|
|
50
|
+
|
|
51
|
+
| 属性 | 值 |
|
|
52
|
+
|------|------|
|
|
53
|
+
| 布局 | 纵向(`flex-col`),居中对齐 |
|
|
54
|
+
| 图标尺寸 | `32×32` |
|
|
55
|
+
| 图标-文字间距 | `6px` |
|
|
56
|
+
| 文字字体 | `14px / 20px`,PingFang SC Semibold(`600`) |
|
|
57
|
+
|
|
58
|
+
### 选中态
|
|
59
|
+
|
|
60
|
+
| 属性 | 值 |
|
|
61
|
+
|------|------|
|
|
62
|
+
| 图标 | `icons-标签栏/{栏目名}选中.svg` |
|
|
63
|
+
| 文字颜色 | `--color-main-6`(`#6445D1`) |
|
|
64
|
+
|
|
65
|
+
### 未选中态
|
|
66
|
+
|
|
67
|
+
| 属性 | 值 |
|
|
68
|
+
|------|------|
|
|
69
|
+
| 图标 | `icons-标签栏/{栏目名}未选.svg` |
|
|
70
|
+
| 文字颜色 | `--color-black-5`(`#666666`) |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 固定栏目
|
|
75
|
+
|
|
76
|
+
| 序号 | 栏目名 | 选中图标 | 未选图标 |
|
|
77
|
+
|------|--------|---------|---------|
|
|
78
|
+
| 1 | 首页 | `icons-标签栏/首页选中.svg` | `icons-标签栏/首页未选.svg` |
|
|
79
|
+
| 2 | 任务 | `icons-标签栏/任务选中.svg` | `icons-标签栏/任务未选.svg` |
|
|
80
|
+
| 3 | 营地 | `icons-标签栏/营地选中.svg` | `icons-标签栏/营地未选.svg` |
|
|
81
|
+
| 4 | 我的 | `icons-标签栏/我的选中.svg` | `icons-标签栏/我的未选.svg` |
|
|
82
|
+
|
|
83
|
+
> **4 个栏目固定,不可增删也不可改名。** 图标位于 [`icons-标签栏/`](../icons-标签栏/) 目录。
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 布局结构
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
┌──────────────────────────────────────────┐
|
|
91
|
+
│ ─── 1px 分割线 ─── │ ← --color-black-2
|
|
92
|
+
├──────────────────────────────────────────┤
|
|
93
|
+
│ │
|
|
94
|
+
│ [首页] [任务] [营地] [我的] │ ← space-between, padding 6px 40px
|
|
95
|
+
│ icon 32 icon 32 icon 32 icon 32 │
|
|
96
|
+
│ 文字 14 文字 14 文字 14 文字 14 │ ← gap 6px
|
|
97
|
+
│ │
|
|
98
|
+
└──────────────────────────────────────────┘
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## HTML 示例
|
|
104
|
+
|
|
105
|
+
### 完整结构(含交互)
|
|
106
|
+
|
|
107
|
+
```html
|
|
108
|
+
<!-- 底部标签栏:首页默认选中 -->
|
|
109
|
+
<nav class="tabbar">
|
|
110
|
+
<div class="tabbar-divider"></div>
|
|
111
|
+
<div class="tabbar-items">
|
|
112
|
+
<!-- 首页(选中) -->
|
|
113
|
+
<div class="tab-item tab-item-on" data-tab="home" onclick="switchTabBar('home')">
|
|
114
|
+
<img src="./icons-标签栏/首页选中.svg" width="32" height="32" alt="首页" />
|
|
115
|
+
<span class="tab-label">首页</span>
|
|
116
|
+
</div>
|
|
117
|
+
<!-- 任务(未选) -->
|
|
118
|
+
<div class="tab-item tab-item-off" data-tab="task" onclick="switchTabBar('task')">
|
|
119
|
+
<img src="./icons-标签栏/任务未选.svg" width="32" height="32" alt="任务" />
|
|
120
|
+
<span class="tab-label">任务</span>
|
|
121
|
+
</div>
|
|
122
|
+
<!-- 营地(未选) -->
|
|
123
|
+
<div class="tab-item tab-item-off" data-tab="camp" onclick="switchTabBar('camp')">
|
|
124
|
+
<img src="./icons-标签栏/营地未选.svg" width="32" height="32" alt="营地" />
|
|
125
|
+
<span class="tab-label">营地</span>
|
|
126
|
+
</div>
|
|
127
|
+
<!-- 我的(未选) -->
|
|
128
|
+
<div class="tab-item tab-item-off" data-tab="mine" onclick="switchTabBar('mine')">
|
|
129
|
+
<img src="./icons-标签栏/我的未选.svg" width="32" height="32" alt="我的" />
|
|
130
|
+
<span class="tab-label">我的</span>
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</nav>
|
|
134
|
+
|
|
135
|
+
<script>
|
|
136
|
+
var TAB_NAMES = { home: '首页', task: '任务', camp: '营地', mine: '我的' };
|
|
137
|
+
|
|
138
|
+
function switchTabBar(name) {
|
|
139
|
+
var items = document.querySelectorAll('.tab-item');
|
|
140
|
+
items.forEach(function(item) {
|
|
141
|
+
var tab = item.getAttribute('data-tab');
|
|
142
|
+
var img = item.querySelector('img');
|
|
143
|
+
var label = item.querySelector('.tab-label');
|
|
144
|
+
if (tab === name) {
|
|
145
|
+
item.className = 'tab-item tab-item-on';
|
|
146
|
+
img.src = './icons-标签栏/' + TAB_NAMES[tab] + '选中.svg';
|
|
147
|
+
label.style.color = 'var(--color-main-6)';
|
|
148
|
+
} else {
|
|
149
|
+
item.className = 'tab-item tab-item-off';
|
|
150
|
+
img.src = './icons-标签栏/' + TAB_NAMES[tab] + '未选.svg';
|
|
151
|
+
label.style.color = 'var(--color-black-5)';
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
</script>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 交互逻辑
|
|
159
|
+
|
|
160
|
+
| 事件 | 行为 |
|
|
161
|
+
|------|------|
|
|
162
|
+
| 点击未选中标签 | 该标签 → `tab-item-on`,图标切为「选中.svg」,文字色 `--color-main-6` |
|
|
163
|
+
| 其余标签 | 恢复 `tab-item-off`,图标切为「未选.svg」,文字色 `--color-black-5` |
|
|
164
|
+
| 点击已选中标签 | 无变化(不触发切换) |
|
|
165
|
+
|
|
166
|
+
> 同时只有 1 个标签处于选中态。切换通过 `class`(`tab-item-on` / `tab-item-off`)控制样式,通过 `img.src` 替换图标,通过内联 `style.color` 覆盖文字颜色。
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## CSS
|
|
171
|
+
|
|
172
|
+
```css
|
|
173
|
+
/* 容器 */
|
|
174
|
+
.tabbar {
|
|
175
|
+
width: 100%;
|
|
176
|
+
height: 71px;
|
|
177
|
+
display: flex;
|
|
178
|
+
flex-direction: column;
|
|
179
|
+
background: var(--color-grey-1);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* 顶部 1px 分割线 */
|
|
183
|
+
.tabbar-divider {
|
|
184
|
+
width: 100%;
|
|
185
|
+
height: 1px;
|
|
186
|
+
background: var(--color-black-2);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* 标签行 */
|
|
190
|
+
.tabbar-items {
|
|
191
|
+
display: flex;
|
|
192
|
+
justify-content: space-between;
|
|
193
|
+
align-items: center;
|
|
194
|
+
padding: 6px 40px;
|
|
195
|
+
flex: 1;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/* 标签项 */
|
|
199
|
+
.tab-item {
|
|
200
|
+
display: flex;
|
|
201
|
+
flex-direction: column;
|
|
202
|
+
justify-content: flex-start;
|
|
203
|
+
align-items: center;
|
|
204
|
+
gap: 6px;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/* 图标 */
|
|
208
|
+
.tab-item img {
|
|
209
|
+
width: 32px;
|
|
210
|
+
height: 32px;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/* 文字 */
|
|
214
|
+
.tab-label {
|
|
215
|
+
font-size: 14px;
|
|
216
|
+
line-height: 20px;
|
|
217
|
+
font-weight: 600;
|
|
218
|
+
font-family: PingFang SC;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/* 选中态 */
|
|
222
|
+
.tab-item-on .tab-label {
|
|
223
|
+
color: var(--color-main-6);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/* 未选中态 */
|
|
227
|
+
.tab-item-off .tab-label {
|
|
228
|
+
color: var(--color-black-5);
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 颜色 Token
|
|
235
|
+
|
|
236
|
+
| Token | 色值 | 使用场景 |
|
|
237
|
+
|-------|------|---------|
|
|
238
|
+
| `--color-grey-1` | `#FFFFFF` | 容器背景 |
|
|
239
|
+
| `--color-black-2` | `#DDDDDD` | 顶部分割线 |
|
|
240
|
+
| `--color-main-6` | `#6445D1` | 选中态文字颜色 |
|
|
241
|
+
| `--color-black-5` | `#666666` | 未选中态文字颜色 |
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## 使用规则(AI 必读)
|
|
246
|
+
|
|
247
|
+
1. **栏目固定不可变**:仅 4 个栏目(首页/任务/营地/我的),不可增删或改名
|
|
248
|
+
2. **图标固定**:每个栏目有两套图标(选中/未选),位于 `icons-标签栏/` 目录,强制使用
|
|
249
|
+
3. **选中态**:文字色 `--color-main-6`(品牌紫),图标用「选中」版本
|
|
250
|
+
4. **未选中态**:文字色 `--color-black-5`(灰色),图标用「未选」版本
|
|
251
|
+
5. **同时仅一项选中**:4 个标签中同一时间只有 1 个处于选中态。点击未选中的标签 → 该标签切换为选中态,其余全部恢复未选态
|
|
252
|
+
6. **布局固定**:容器 480×71px,`space-between` 均分,padding `6px 40px`
|
|
253
|
+
7. **分割线固定**:顶部 1px,颜色 `--color-black-2`,与 `icons-标签栏/` 内线条资源保持一致
|
|
254
|
+
8. **底部吸底**:标签栏固定在页面底部,不作为滚动内容的一部分
|
package/spec-data/tab.md
ADDED
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: tab
|
|
3
|
+
name: 标签页
|
|
4
|
+
category: "导航/Navigation"
|
|
5
|
+
version: "1.0.0"
|
|
6
|
+
source: PDAKit-基础组件
|
|
7
|
+
source_url: https://mastergo.ky-tech.com.cn/goto/TXnzdYq3
|
|
8
|
+
source_doc_id: 103417331857122
|
|
9
|
+
component_count: 4
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# 标签页 Tab
|
|
13
|
+
|
|
14
|
+
PDAKit 标签页体系:**圆角标签 2 态 / 小标签 7 色系 / TAB 按钮 2 尺寸**,用于分类切换、状态标记及按钮组合。
|
|
15
|
+
|
|
16
|
+
> **状态命名**:圆角标签 `default`(默认)/ `selected`(已选);TAB 按钮 `on`(选中)/ `off`(未选中);小标签枚举变体。
|
|
17
|
+
> **颜色规则**:全部使用 Token(`--color-{色系}-{色阶}`),禁止 Hex。Token 定义见文末 [附录 A](#附录-a颜色-token)。
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 组件总览
|
|
22
|
+
|
|
23
|
+
| 组件 | Key | 变体数 |
|
|
24
|
+
|------|-----|--------|
|
|
25
|
+
| 圆角标签 | `029-圆角标签` | 2 态 |
|
|
26
|
+
| 小标签 | `064-小标签` | 7 色系 |
|
|
27
|
+
| 标签资源/按钮组件 | `034-标签资源-按钮组件` | 2 态 (on/off) |
|
|
28
|
+
| 标签资源/小按钮组件 | `030-标签资源-小按钮组件` | 2 态 (on/off) |
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 1. 圆角标签
|
|
33
|
+
|
|
34
|
+
**描述**: 最底层标签选择,用于一级分类切换。胶囊型(`border-radius: 45px`)。
|
|
35
|
+
|
|
36
|
+
### Props
|
|
37
|
+
|
|
38
|
+
| Prop | 类型 | 值 |
|
|
39
|
+
|------|------|-----|
|
|
40
|
+
| 文本 | string | 任意(默认 `请输入`) |
|
|
41
|
+
| 类型 | enum | `默认` / `已选` |
|
|
42
|
+
|
|
43
|
+
### 规格
|
|
44
|
+
|
|
45
|
+
| 属性 | 值 |
|
|
46
|
+
|------|------|
|
|
47
|
+
| 最小宽度 | `36px` |
|
|
48
|
+
| 内边距 | t/b `3px`, l/r `16px` |
|
|
49
|
+
| 圆角 | `45px`(胶囊型) |
|
|
50
|
+
| 字体 | `22px / 30px`,PingFang SC Regular |
|
|
51
|
+
|
|
52
|
+
### 颜色
|
|
53
|
+
|
|
54
|
+
| state | bg | text | border |
|
|
55
|
+
|-------|-----|------|--------|
|
|
56
|
+
| default | `--color-grey-1` | `--color-black-6` | `1px --color-black-2` |
|
|
57
|
+
| selected | `--color-main-1` | `--color-main-6` | `1px --color-main-6` |
|
|
58
|
+
|
|
59
|
+
### CSS 示例
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
/* 圆角标签 默认 */
|
|
63
|
+
.tab-rounded {
|
|
64
|
+
min-width: 36px;
|
|
65
|
+
display: flex;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
align-items: center;
|
|
68
|
+
padding: 3px 16px;
|
|
69
|
+
background: var(--color-grey-1);
|
|
70
|
+
border: 1px solid var(--color-black-2);
|
|
71
|
+
border-radius: 45px;
|
|
72
|
+
color: var(--color-black-6);
|
|
73
|
+
font-size: 22px;
|
|
74
|
+
line-height: 30px;
|
|
75
|
+
font-family: PingFang SC;
|
|
76
|
+
overflow: hidden;
|
|
77
|
+
}
|
|
78
|
+
/* 已选 */
|
|
79
|
+
.tab-rounded-selected {
|
|
80
|
+
background: var(--color-main-1);
|
|
81
|
+
border-color: var(--color-main-6);
|
|
82
|
+
color: var(--color-main-6);
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 2. 小标签
|
|
89
|
+
|
|
90
|
+
**描述**: 状态标签,7 种色系覆盖全业务场景。高度固定 28px,可带图标。
|
|
91
|
+
|
|
92
|
+
### Props
|
|
93
|
+
|
|
94
|
+
| Prop | 类型 | 值 |
|
|
95
|
+
|------|------|-----|
|
|
96
|
+
| 属性 1 | enum | `默认通用` / `默认带图标` / `失败出错` / `完成成功` / `突出警示` / `正常状态` / `主题紫色` |
|
|
97
|
+
|
|
98
|
+
### 规格
|
|
99
|
+
|
|
100
|
+
| 属性 | 值 |
|
|
101
|
+
|------|------|
|
|
102
|
+
| 高度 | `28px` |
|
|
103
|
+
| 内边距 | t/b `4px`, l/r `8px` |
|
|
104
|
+
| 圆角 | `--radius-4` |
|
|
105
|
+
| 字体 | `14px / 20px`,PingFang SC Semibold |
|
|
106
|
+
| 图标尺寸 | `16×16`(仅默认带图标) |
|
|
107
|
+
| 图标间距 | `--spacing-4` |
|
|
108
|
+
| 边框 | `1px solid` |
|
|
109
|
+
|
|
110
|
+
### 颜色矩阵
|
|
111
|
+
|
|
112
|
+
| 变体 | bg | border | text | Token |
|
|
113
|
+
|------|-----|--------|------|-------|
|
|
114
|
+
| 默认通用 | `#f3f4f6` | `#e0e4f0` | `#52567b` | grey-2/3/6 |
|
|
115
|
+
| 默认带图标 | `#f3f4f6` | `#e0e4f0` | `#52567b` | grey-2/3/6 |
|
|
116
|
+
| 失败出错 | `#ffece8` | `#fdb2ac` | `#cf3337` | red-1/3/7 |
|
|
117
|
+
| 完成成功 | `#e9fff0` | `#82e6a8` | `#01a356` | green-1/3/7 |
|
|
118
|
+
| 突出警示 | `#fffae7` | `#fede8b` | `#d07a01` | yellow-1/3/7 |
|
|
119
|
+
| 正常状态 | `#e7f3ff` | `#9fc8fd` | `#3376fa` | blue-1/3/6 |
|
|
120
|
+
| 主题紫色 | `#f1e7ff` | `#b9a0ed` | `#6445d1` | main-1/3/6 |
|
|
121
|
+
|
|
122
|
+
### CSS 示例
|
|
123
|
+
|
|
124
|
+
```css
|
|
125
|
+
/* 小标签 默认通用 */
|
|
126
|
+
.tag-default {
|
|
127
|
+
display: flex;
|
|
128
|
+
justify-content: center;
|
|
129
|
+
align-items: center;
|
|
130
|
+
padding: 4px 8px;
|
|
131
|
+
height: 28px;
|
|
132
|
+
background: var(--color-grey-2);
|
|
133
|
+
border: 1px solid var(--color-grey-3);
|
|
134
|
+
border-radius: var(--radius-4);
|
|
135
|
+
color: var(--color-grey-6);
|
|
136
|
+
font-size: 14px;
|
|
137
|
+
line-height: 20px;
|
|
138
|
+
font-weight: 600;
|
|
139
|
+
font-family: PingFang SC;
|
|
140
|
+
overflow: hidden;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* 失败出错 */
|
|
144
|
+
.tag-error { background: var(--color-red-1); border-color: var(--color-red-3); color: var(--color-red-7); }
|
|
145
|
+
/* 完成成功 */
|
|
146
|
+
.tag-success{ background: var(--color-green-1); border-color: var(--color-green-3); color: var(--color-green-7); }
|
|
147
|
+
/* 突出警示 */
|
|
148
|
+
.tag-warning{ background: var(--color-yellow-1); border-color: var(--color-yellow-3); color: var(--color-yellow-7); }
|
|
149
|
+
/* 正常状态 */
|
|
150
|
+
.tag-info { background: var(--color-blue-1); border-color: var(--color-blue-3); color: var(--color-blue-6); }
|
|
151
|
+
/* 主题紫色 */
|
|
152
|
+
.tag-purple { background: var(--color-main-1); border-color: var(--color-main-3); color: var(--color-main-6); }
|
|
153
|
+
|
|
154
|
+
/* 带图标 */
|
|
155
|
+
.tag-default-icon {
|
|
156
|
+
gap: var(--spacing-4);
|
|
157
|
+
}
|
|
158
|
+
.tag-default-icon svg {
|
|
159
|
+
width: 16px;
|
|
160
|
+
height: 16px;
|
|
161
|
+
color: var(--color-grey-6);
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 3. 标签资源/按钮组件(TAB 按钮)
|
|
168
|
+
|
|
169
|
+
**描述**: 用于按钮组合(TAB 切换)中的子标签块。白底凸块式。
|
|
170
|
+
|
|
171
|
+
### Props
|
|
172
|
+
|
|
173
|
+
| Prop | 类型 | 值 |
|
|
174
|
+
|------|------|-----|
|
|
175
|
+
| 标签名 | string | 任意(默认 `TAB`) |
|
|
176
|
+
| 选中 | enum | `on` / `off` |
|
|
177
|
+
| 可关闭 | boolean | — |
|
|
178
|
+
| 显示数量 | boolean | — |
|
|
179
|
+
| 显示单位 | boolean | — |
|
|
180
|
+
| 数量 | string | `"1"` |
|
|
181
|
+
| 数量红色 | boolean | — |
|
|
182
|
+
| 单位 | string | `"票"` |
|
|
183
|
+
|
|
184
|
+
### 规格
|
|
185
|
+
|
|
186
|
+
| 属性 | 值 |
|
|
187
|
+
|------|------|
|
|
188
|
+
| 最小宽度 | `68px` |
|
|
189
|
+
| 内边距 | t/b `12px`, l/r `16px` |
|
|
190
|
+
| 圆角 | `10px` |
|
|
191
|
+
| 字体 | `18px / 25px`,PingFang SC(on=Semibold, off=Regular) |
|
|
192
|
+
|
|
193
|
+
### 颜色
|
|
194
|
+
|
|
195
|
+
| state | bg | text |
|
|
196
|
+
|-------|-----|------|
|
|
197
|
+
| on | `--color-grey-1` | `--color-black-6` |
|
|
198
|
+
| off | `--color-grey-2` | `--color-black-5` |
|
|
199
|
+
|
|
200
|
+
### CSS 示例
|
|
201
|
+
|
|
202
|
+
```css
|
|
203
|
+
/* TAB 按钮 on */
|
|
204
|
+
.tab-btn-on {
|
|
205
|
+
min-width: 68px;
|
|
206
|
+
display: flex;
|
|
207
|
+
justify-content: center;
|
|
208
|
+
align-items: center;
|
|
209
|
+
gap: 2px;
|
|
210
|
+
padding: 12px 16px;
|
|
211
|
+
background: var(--color-grey-1);
|
|
212
|
+
border-radius: 10px;
|
|
213
|
+
color: var(--color-black-6);
|
|
214
|
+
font-size: 18px;
|
|
215
|
+
line-height: 25px;
|
|
216
|
+
font-weight: 600;
|
|
217
|
+
font-family: PingFang SC;
|
|
218
|
+
}
|
|
219
|
+
/* TAB 按钮 off */
|
|
220
|
+
.tab-btn-off {
|
|
221
|
+
min-width: 68px;
|
|
222
|
+
padding: 12px 16px;
|
|
223
|
+
background: var(--color-grey-2);
|
|
224
|
+
border-radius: 10px;
|
|
225
|
+
color: var(--color-black-5);
|
|
226
|
+
font-size: 18px;
|
|
227
|
+
line-height: 25px;
|
|
228
|
+
font-weight: 400;
|
|
229
|
+
font-family: PingFang SC;
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 4. 标签资源/小按钮组件(小号 TAB 按钮)
|
|
236
|
+
|
|
237
|
+
**描述**: 紧凑型 TAB 切换按钮,固定宽度 58px。
|
|
238
|
+
|
|
239
|
+
### Props
|
|
240
|
+
|
|
241
|
+
| Prop | 类型 | 值 |
|
|
242
|
+
|------|------|-----|
|
|
243
|
+
| 文本 | string | 任意(默认 `请输入`) |
|
|
244
|
+
| 选中 | enum | `on` / `off` |
|
|
245
|
+
|
|
246
|
+
### 规格
|
|
247
|
+
|
|
248
|
+
| 属性 | 值 |
|
|
249
|
+
|------|------|
|
|
250
|
+
| 尺寸 | `58×33` |
|
|
251
|
+
| 内边距 | t/b `4px`, l/r `2px` |
|
|
252
|
+
| 圆角 | `--radius-4` |
|
|
253
|
+
| 字体 | `18px / 25px`,PingFang SC(on=Semibold, off=Regular) |
|
|
254
|
+
|
|
255
|
+
### 颜色
|
|
256
|
+
|
|
257
|
+
| state | bg | text |
|
|
258
|
+
|-------|-----|------|
|
|
259
|
+
| on | `--color-main-6` | `--color-grey-1` |
|
|
260
|
+
| off | `--color-grey-2` | `--color-black-5` |
|
|
261
|
+
|
|
262
|
+
### CSS 示例
|
|
263
|
+
|
|
264
|
+
```css
|
|
265
|
+
/* 小号 TAB 按钮 on */
|
|
266
|
+
.tab-sm-on {
|
|
267
|
+
width: 58px;
|
|
268
|
+
height: 33px;
|
|
269
|
+
min-width: 58px;
|
|
270
|
+
display: flex;
|
|
271
|
+
justify-content: center;
|
|
272
|
+
align-items: center;
|
|
273
|
+
gap: 2px;
|
|
274
|
+
padding: 4px 2px;
|
|
275
|
+
background: var(--color-main-6);
|
|
276
|
+
border-radius: var(--radius-4);
|
|
277
|
+
color: var(--color-grey-1);
|
|
278
|
+
font-size: 18px;
|
|
279
|
+
line-height: 25px;
|
|
280
|
+
font-weight: 600;
|
|
281
|
+
font-family: PingFang SC;
|
|
282
|
+
}
|
|
283
|
+
/* off */
|
|
284
|
+
.tab-sm-off {
|
|
285
|
+
background: var(--color-grey-2);
|
|
286
|
+
color: var(--color-black-5);
|
|
287
|
+
font-weight: 400;
|
|
288
|
+
}
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## 附录 A:颜色 Token
|
|
294
|
+
|
|
295
|
+
| Token | 色值 | 使用场景 |
|
|
296
|
+
|-------|------|---------|
|
|
297
|
+
| `--color-grey-1` | `#ffffff` | 圆角标签默认背景;TAB 按钮 on 背景 |
|
|
298
|
+
| `--color-grey-2` | `#f3f4f6` | 默认通用/带图标标签背景;TAB 按钮 off 背景 |
|
|
299
|
+
| `--color-grey-3` | `#e0e4f0` | 默认通用/带图标标签边框 |
|
|
300
|
+
| `--color-grey-6` | `#52567b` | 默认通用/带图标标签文字 |
|
|
301
|
+
| `--color-black-2` | `#dddddd` | 圆角标签默认边框 |
|
|
302
|
+
| `--color-black-5` | `#666666` | TAB 按钮 off 文字 |
|
|
303
|
+
| `--color-black-6` | `#333333` | 圆角标签默认文字;TAB 按钮 on 文字 |
|
|
304
|
+
| `--color-main-1` | `#f1e7ff` | 圆角标签 selected 背景;主题紫色标签背景 |
|
|
305
|
+
| `--color-main-3` | `#b9a0ed` | 主题紫色标签边框 |
|
|
306
|
+
| `--color-main-6` | `#6445d1` | 圆角标签 selected 文字/边框;主题紫色标签文字;小按钮 on 背景 |
|
|
307
|
+
| `--color-red-1` | `#ffece8` | 失败出错标签背景 |
|
|
308
|
+
| `--color-red-3` | `#fdb2ac` | 失败出错标签边框 |
|
|
309
|
+
| `--color-red-7` | `#cf3337` | 失败出错标签文字 |
|
|
310
|
+
| `--color-green-1` | `#e9fff0` | 完成成功标签背景 |
|
|
311
|
+
| `--color-green-3` | `#82e6a8` | 完成成功标签边框 |
|
|
312
|
+
| `--color-green-7` | `#01a356` | 完成成功标签文字 |
|
|
313
|
+
| `--color-yellow-1` | `#fffae7` | 突出警示标签背景 |
|
|
314
|
+
| `--color-yellow-3` | `#fede8b` | 突出警示标签边框 |
|
|
315
|
+
| `--color-yellow-7` | `#d07a01` | 突出警示标签文字 |
|
|
316
|
+
| `--color-blue-1` | `#e7f3ff` | 正常状态标签背景 |
|
|
317
|
+
| `--color-blue-3` | `#9fc8fd` | 正常状态标签边框 |
|
|
318
|
+
| `--color-blue-6` | `#3376fa` | 正常状态标签文字 |
|
|
319
|
+
|
|
320
|
+
> 详见 [tokens/colors.md](../tokens/colors.md)。小标签 Color Token 共 6 色系 × 3 色阶 = 18 组(含跨色系复用)。
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## 附录 B:字体 Token
|
|
325
|
+
|
|
326
|
+
| Token | 字号 | 行高 | 字重 | 适用组件 |
|
|
327
|
+
|-------|------|------|------|---------|
|
|
328
|
+
| `text/22/30` | 22px | 30px | Regular | 圆角标签 |
|
|
329
|
+
| 18/25 | 18px | 25px | Semibold/Regular | TAB 按钮 / 小按钮 |
|
|
330
|
+
| 14/20/Semibold | 14px | 20px | Semibold | 小标签 |
|
|
331
|
+
|
|
332
|
+
> 字体统一 PingFang SC。详见 [tokens/typography.md](../tokens/typography.md)
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## 使用规则(AI 必读)
|
|
337
|
+
|
|
338
|
+
1. **颜色用 Token**:禁止裸 Hex,全部用 `--color-*` 引用
|
|
339
|
+
2. **标签选型**:
|
|
340
|
+
| 场景 | 组件 |
|
|
341
|
+
|------|------|
|
|
342
|
+
| 一级分类切换 | 圆角标签 |
|
|
343
|
+
| 状态标记(成功/失败/警示等) | 小标签 |
|
|
344
|
+
| 按钮组合内 TAB 块 | 标签资源/按钮组件 |
|
|
345
|
+
| 紧凑型 TAB 切换 | 标签资源/小按钮组件 |
|
|
346
|
+
3. **圆角标签**:必须覆盖 `default` / `selected` 两态
|
|
347
|
+
4. **TAB 按钮**:必须覆盖 `on` / `off` 两态
|
|
348
|
+
5. **小标签色系**:按语义选择 — 失败→红、成功→绿、警示→黄、信息→蓝、品牌→紫
|
|
349
|
+
6. **引用命名**:使用 `❖PDAKit™:圆角标签` 格式
|