@teamix-evo/skills 0.11.0 → 0.12.0
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/package.json +1 -1
- package/src/teamix-evo-design-opentrek/SKILL.md +27 -19
- package/src/teamix-evo-design-opentrek/pages/dashboard-page/SKILL.md +429 -0
- package/src/teamix-evo-design-opentrek/pages/dashboard-page/patterns/dashboard-opentrek.md +268 -0
- package/src/teamix-evo-design-opentrek/pages/form-page/SKILL.md +423 -5
- package/src/teamix-evo-design-opentrek/pages/list-page/SKILL.md +396 -25
- package/src/teamix-evo-design-opentrek/pages/list-page/_shared/item-card-spec.md +386 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/card-list-opentrek.md +739 -0
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/card-list.md +89 -363
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/standard-list-opentrek.md +318 -0
- package/src/teamix-evo-design-opentrek/patterns/dashboard.md +9 -16
- package/src/teamix-evo-design-uni-manager/SKILL.md +7 -0
- package/src/teamix-evo-manage/SKILL.md +66 -29
- package/src/teamix-evo-design-opentrek/pages/list-page/_shared/action-column-spec.md +0 -60
- package/src/teamix-evo-design-opentrek/pages/list-page/_shared/state-action-pattern.md +0 -51
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/advanced-filter-list.md +0 -94
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/drawer-list.md +0 -76
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/expandable-list.md +0 -70
- package/src/teamix-evo-design-opentrek/pages/list-page/patterns/l2-sidebar-list.md +0 -73
|
@@ -0,0 +1,739 @@
|
|
|
1
|
+
# OpenTrek 卡片列表页业务规则
|
|
2
|
+
|
|
3
|
+
> 路由自 [card-list.md](./card-list.md)
|
|
4
|
+
> 本文件基于 OpenTrek DEV 平台实际页面截图沉淀,定义页面级组合规则。
|
|
5
|
+
> 所有 UI 组件引用均指向 `packages/ui/src/components/`,开发时必须从该路径导入。
|
|
6
|
+
> 卡片三件套规格详见 [_shared/item-card-spec.md](../_shared/item-card-spec.md)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. 页面模式速查表
|
|
11
|
+
|
|
12
|
+
| 模式 ID | 名称 | 典型页面 | 核心结构 |
|
|
13
|
+
|---------|------|----------|----------|
|
|
14
|
+
| **OT-CL-1** | Tab 导航卡片列表 | 评估器 / 知识库 / Skills Hub / 智能体 | Tabs + ActionToolbar + CardGrid + Pagination |
|
|
15
|
+
| **OT-CL-2** | 复合卡片页面 | 记忆体 > 空间共用 | Breadcrumb + Tabs + FeatureCards + Alert + Table |
|
|
16
|
+
| **OT-CL-3** | 简单卡片列表 | 记忆体(列表入口) | ActionToolbar + CardGrid(无 Pagination) |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 2. OT-CL-1:Tab 导航卡片列表
|
|
21
|
+
|
|
22
|
+
> 典型页面:评估器(空间评估器/内置评估器)、知识库(空间知识库/共享知识库)、Skills Hub(空间/共享/内置 Skills)、智能体(智能体开发/智能体模板)
|
|
23
|
+
|
|
24
|
+
### 布局骨架
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
┌─ PageShell (components/page-shell) ──────────────────────────────────────┐
|
|
28
|
+
│ sidebar: Sidebar (components/sidebar) │
|
|
29
|
+
│ children: │
|
|
30
|
+
│ ┌─ ContentCard (components/card → Card + CardContent) ──────────────┐ │
|
|
31
|
+
│ │ PageHeader (components/page-header → PageHeader + PageHeaderHeading)│ │
|
|
32
|
+
│ │ 标题: "评估器" / "知识库" / "Skills Hub" / "智能体" │ │
|
|
33
|
+
│ │ │ │
|
|
34
|
+
│ │ Tabs (components/tabs → Tabs + TabsList[variant='line'] + TabsTrigger)│ │
|
|
35
|
+
│ │ [空间评估器 | 内置评估器] │ │
|
|
36
|
+
│ │ [空间知识库 | 共享知识库] │ │
|
|
37
|
+
│ │ [空间Skills | 共享Skills | 内置Skills] │ │
|
|
38
|
+
│ │ [智能体开发 | 智能体模板] │ │
|
|
39
|
+
│ │ │ │
|
|
40
|
+
│ │ ActionToolbar (flex, nowrap): │ │
|
|
41
|
+
│ │ .left-actions: │ │
|
|
42
|
+
│ │ Button (components/button, variant='default', color='primary') │ │
|
|
43
|
+
│ │ "+ 新建评估器" / "+ 创建知识库" / "安装Skill" / "+ 新建智能体" │ │
|
|
44
|
+
│ │ [Button (variant='outline')] "导入智能体" *可选 │ │
|
|
45
|
+
│ │ [Button (variant='outline')] "获取导入秘钥凭证" *可选 │ │
|
|
46
|
+
│ │ .search-combo (SearchCombo, margin-left: 20px): │ │
|
|
47
|
+
│ │ Input (components/input) placeholder="搜索评估器名称…" │ │
|
|
48
|
+
│ │ .right-tools: │ │
|
|
49
|
+
│ │ [Select (components/select)] "全部 ▼" *可选 │ │
|
|
50
|
+
│ │ │ │
|
|
51
|
+
│ │ FilterRow (*可选, 位于 ActionToolbar 下方): │ │
|
|
52
|
+
│ │ 方案A — ToggleGroup (components/toggle-group): │ │
|
|
53
|
+
│ │ [全部] [大模型] [代码] │ │
|
|
54
|
+
│ │ 方案B — Tag (components/tag → CheckableTag + CheckableTagGroup): │ │
|
|
55
|
+
│ │ [全部] [TrekAgent] [知识问答] [工作流] [角色对话] [高代码] │ │
|
|
56
|
+
│ │ 方案C — 无独立筛选行,使用 Tabs 切换 │ │
|
|
57
|
+
│ │ │ │
|
|
58
|
+
│ │ CardGrid (CSS Grid, item-card-spec §2): │ │
|
|
59
|
+
│ │ ┌─ItemCard─┐ ┌─ItemCard─┐ ┌─ItemCard─┐ │ │
|
|
60
|
+
│ │ │ Avatar │ │ Avatar │ │ Avatar │ × N (3-4列) │ │
|
|
61
|
+
│ │ │ Title │ │ Title │ │ Title │ │ │
|
|
62
|
+
│ │ │ Desc │ │ Desc │ │ Desc │ │ │
|
|
63
|
+
│ │ │ Meta │ │ Meta │ │ Meta │ │ │
|
|
64
|
+
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
|
|
65
|
+
│ │ │ │
|
|
66
|
+
│ │ Pagination (components/pagination): │ │
|
|
67
|
+
│ │ 共 4 条 每页显示: [12 ▼] [‹] [1] [›] │ │
|
|
68
|
+
│ └────────────────────────────────────────────────────────────────────┘ │
|
|
69
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 页面级组件清单
|
|
73
|
+
|
|
74
|
+
| 区域 | UI 组件库引用 | 用途 | 必需 |
|
|
75
|
+
|------|--------------|------|------|
|
|
76
|
+
| 页面框架 | `components/page-shell` → `PageShell` | L1 级页面壳,sidebar + children | ✅ |
|
|
77
|
+
| 侧边导航 | `components/sidebar` → `Sidebar` + `SidebarContent` + `SidebarMenu` + `SidebarMenuItem` + `SidebarMenuButton` | 左侧导航菜单 | ✅ (TWO_COL) |
|
|
78
|
+
| 白卡容器 | `components/card` → `Card` + `CardContent` | 内容区白色容器 | ✅ |
|
|
79
|
+
| 页面标题 | `components/page-header` → `PageHeader` + `PageHeaderHeading` | 标题 18px/500 | ✅ |
|
|
80
|
+
| Tab 切换 | `components/tabs` → `Tabs` + `TabsList`(variant='line') + `TabsTrigger` + `TabsContent` | 子视图切换 | ✅ |
|
|
81
|
+
| 主操作按钮 | `components/button` → `Button`(variant='default', color='primary') | "+ 新建XXX" | ✅ |
|
|
82
|
+
| 辅助按钮 | `components/button` → `Button`(variant='outline') | "导入"等 | 可选 |
|
|
83
|
+
| 搜索输入 | `components/input` → `Input` | 搜索框 | ✅ |
|
|
84
|
+
| 筛选标签 | `components/toggle-group` → `ToggleGroup` + `ToggleGroupItem` | 分类筛选 | 可选 |
|
|
85
|
+
| 筛选标签 | `components/tag` → `CheckableTag` + `CheckableTagGroup` | 多分类筛选 | 可选 |
|
|
86
|
+
| 下拉筛选 | `components/select` → `Select` + `SelectTrigger` + `SelectContent` + `SelectItem` | 下拉选择 "全部 ▼" | 可选 |
|
|
87
|
+
| 卡片网格 | CSS Grid (item-card-spec §2) | 承载 ItemCard | ✅ |
|
|
88
|
+
| 业务卡片 | `components/card` → `Card` + `CardHeader` + `CardTitle` + `CardDescription` + `CardContent` + `CardFooter` | 单个数据项 | ✅ |
|
|
89
|
+
| 卡片头像 | `components/avatar` → `Avatar` + `AvatarFallback` | 首字母色块 / 图标 | ✅ |
|
|
90
|
+
| 状态标签 | `components/tag` → `Tag`(variant='status') | 启用/禁用/正常/有风险 | 按业务 |
|
|
91
|
+
| 版本标签 | `components/badge` → `Badge`(variant='secondary') | v1.0.0 等版本信息 | 按业务 |
|
|
92
|
+
| 分类标签 | `components/tag` → `Tag`(palette='blue'/'green'/...) | 大模型/代码/文档/问答 等 | 按业务 |
|
|
93
|
+
| 安全扫描 | `components/badge` → `Badge`(variant='outline') + icon | 安全 ✅ / 有风险 ⚠️ | 按业务 |
|
|
94
|
+
| 安装状态 | `components/tag` → `Tag`(variant='status', status='success'/'default') | 已安装 / 未安装 / 有更新 | 按业务 |
|
|
95
|
+
| 分页 | `components/pagination` → `Pagination` + `PaginationContent` + `PaginationItem` + `PaginationLink` + `PaginationPrevious` + `PaginationNext` | 底部分页控件 | ✅ |
|
|
96
|
+
| 每页条数 | `components/select` → `Select` + `SelectTrigger` + `SelectItem` | "每页显示: 12 ▼" | ✅ |
|
|
97
|
+
| 提示 | `components/tooltip` → `Tooltip` + `TooltipTrigger` + `TooltipContent` | 悬停说明 | 可选 |
|
|
98
|
+
|
|
99
|
+
### ItemCard Slot 变体(按业务场景)
|
|
100
|
+
|
|
101
|
+
**变体 A:简单信息卡片**(评估器)
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
┌─ ItemCard ──────────────────────────────┐
|
|
105
|
+
│ [Avatar 32×32] 标题 (14px/500) │ ← CardTitleRow
|
|
106
|
+
│ 描述文字 (12px, 1行截断) │ ← CardDescriptionRow
|
|
107
|
+
│ ──────────────────────────────────────── │
|
|
108
|
+
│ [TypeTag] 🕐 2024-04-15 14:30 │ ← CardSupplementaryRow
|
|
109
|
+
│ │
|
|
110
|
+
│ [CardActionBar — hover-slidebar] │ ← hover 时上滑显示
|
|
111
|
+
└──────────────────────────────────────────┘
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
| Slot | 内容 | UI 组件库引用 |
|
|
115
|
+
|------|------|--------------|
|
|
116
|
+
| CardTitleRow | `Avatar`(colorHash) + `CardTitle`(14px) | `components/avatar` + `components/card` |
|
|
117
|
+
| CardDescriptionRow | 描述 1 行 | `components/card` → `CardDescription` |
|
|
118
|
+
| CardFieldRow | 无 | — |
|
|
119
|
+
| CardSupplementaryRow | 类型 `Tag`(palette) + 更新时间 | `components/tag` |
|
|
120
|
+
|
|
121
|
+
**变体 B:状态卡片**(知识库)
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
┌─ ItemCard ──────────────────────────────┐
|
|
125
|
+
│ [Avatar 32×32] 标题 (14px/500) [启用] │ ← CardTitleRow + statusBadge
|
|
126
|
+
│ 描述文字 (12px, 1行截断) │ ← CardDescriptionRow
|
|
127
|
+
│ ──────────────────────────────────────── │
|
|
128
|
+
│ 👤 shaoshi 📂 文档 🕐 2024-03-20 │ ← CardSupplementaryRow (3字段)
|
|
129
|
+
│ │
|
|
130
|
+
│ [CardActionBar — hover-slidebar] │
|
|
131
|
+
└──────────────────────────────────────────┘
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
| Slot | 内容 | UI 组件库引用 |
|
|
135
|
+
|------|------|--------------|
|
|
136
|
+
| CardTitleRow | `Avatar`(colorHash/icon) + `CardTitle` + `Tag`(variant='status') | `components/avatar` + `components/card` + `components/tag` |
|
|
137
|
+
| CardDescriptionRow | 描述 1 行 | `components/card` → `CardDescription` |
|
|
138
|
+
| CardSupplementaryRow | 创建人 + 类型 + 更新时间(3 字段) | 内联 span |
|
|
139
|
+
|
|
140
|
+
**状态 Badge 映射**:
|
|
141
|
+
|
|
142
|
+
| 业务状态 | `Tag` 属性 |
|
|
143
|
+
|----------|-----------|
|
|
144
|
+
| 启用 / 正常 / 已安装 | `variant='status'`, `status='success'` |
|
|
145
|
+
| 禁用 | `variant='status'`, `status='default'` |
|
|
146
|
+
| 有风险 | `variant='status'`, `status='warning'` |
|
|
147
|
+
| 有更新 | `variant='status'`, `status='warning'`(橙色) |
|
|
148
|
+
| 安全 | `Badge`(variant='outline') + ✅ 图标 |
|
|
149
|
+
|
|
150
|
+
**变体 C:技能卡片**(Skills Hub — 空间Skills)
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
┌─ ItemCard ──────────────────────────────┐
|
|
154
|
+
│ [Avatar 32×32] 标题 (14px/500) v3.0.1 │ ← CardTitleRow + Badge(version)
|
|
155
|
+
│ 描述文字 (12px, 1行截断) │ ← CardDescriptionRow
|
|
156
|
+
│ 安装方式: 文件 │ ← CardFieldRow (label:value)
|
|
157
|
+
│ 安全扫描: ✅ 安全 │ ← CardFieldRow (icon+label)
|
|
158
|
+
│ ──────────────────────────────────────── │
|
|
159
|
+
│ 📅 2026-04-21 │ ← CardSupplementaryRow
|
|
160
|
+
│ │
|
|
161
|
+
│ [CardActionBar — hover-slidebar] │
|
|
162
|
+
└──────────────────────────────────────────┘
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
| Slot | 内容 | UI 组件库引用 |
|
|
166
|
+
|------|------|--------------|
|
|
167
|
+
| CardTitleRow | `Avatar`(colorHash) + `CardTitle` + `Badge`(variant='secondary', version) | `components/avatar` + `components/card` + `components/badge` |
|
|
168
|
+
| CardDescriptionRow | 描述 1 行 | `components/card` → `CardDescription` |
|
|
169
|
+
| CardFieldRow ×2 | 安装方式 + 安全扫描 | 内联 span |
|
|
170
|
+
| CardSupplementaryRow | 创建时间 | 内联 span |
|
|
171
|
+
|
|
172
|
+
**变体 D:技能卡片(多标签)**(Skills Hub — 共享/内置 Skills)
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
┌─ ItemCard ──────────────────────────────┐
|
|
176
|
+
│ [Avatar 32×32] 标题 (14px/500) v1.5.0 │ ← CardTitleRow + Badge(version)
|
|
177
|
+
│ 描述文字 (12px, 1行截断) │ ← CardDescriptionRow
|
|
178
|
+
│ [✅安全] [未安装] [AI能力] │ ← CardFieldRow (Badge+Tag row)
|
|
179
|
+
│ ──────────────────────────────────────── │
|
|
180
|
+
│ 📅 2026-04-18 │ ← CardSupplementaryRow
|
|
181
|
+
│ │
|
|
182
|
+
│ [CardActionBar — hover-slidebar] │
|
|
183
|
+
└──────────────────────────────────────────┘
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
| Slot | 内容 | UI 组件库引用 |
|
|
187
|
+
|------|------|--------------|
|
|
188
|
+
| CardTitleRow | `Avatar` + `CardTitle` + `Badge`(variant='secondary', version) | `components/avatar` + `components/card` + `components/badge` |
|
|
189
|
+
| CardDescriptionRow | 描述 1 行 | `components/card` → `CardDescription` |
|
|
190
|
+
| CardFieldRow | Badge 行:安全扫描 + 安装状态 + 分类标签 | `components/badge` + `components/tag` |
|
|
191
|
+
| CardSupplementaryRow | 创建时间 | 内联 span |
|
|
192
|
+
|
|
193
|
+
**多标签行 Badge/Tag 映射**:
|
|
194
|
+
|
|
195
|
+
| 信息 | 组件 | 属性 |
|
|
196
|
+
|------|------|------|
|
|
197
|
+
| 安全扫描 "安全" | `Badge` | `variant='outline'`, 绿色 ✅ 图标 + 文字 |
|
|
198
|
+
| 安全扫描 "有风险" | `Badge` | `variant='outline'`, 橙色 ⚠️ 图标 + 文字 |
|
|
199
|
+
| 安装状态 "已安装" | `Tag` | `variant='status'`, `status='success'` |
|
|
200
|
+
| 安装状态 "未安装" | `Tag` | `variant='status'`, `status='default'` |
|
|
201
|
+
| 安装状态 "有更新" | `Tag` | `variant='status'`, `status='warning'` |
|
|
202
|
+
| 分类 "AI能力" / "数据处理" / "自动化" | `Tag` | `palette='blue'` / `'green'` / `'orange'` |
|
|
203
|
+
|
|
204
|
+
**变体 E:智能体卡片**(智能体)
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
┌─ ItemCard ──────────────────────────────┐
|
|
208
|
+
│ [Avatar 32×32] 标题 (14px/500) │ ← CardTitleRow
|
|
209
|
+
│ 描述文字 (12px, 1行截断) │ ← CardDescriptionRow
|
|
210
|
+
│ ──────────────────────────────────────── │
|
|
211
|
+
│ 👤 创建人: chengmu │ ← CardSupplementaryRow
|
|
212
|
+
│ ✅ 创建类型: TrekAgent │ ← CardFieldRow
|
|
213
|
+
│ │
|
|
214
|
+
│ [CardActionBar — hover-slidebar] │
|
|
215
|
+
└──────────────────────────────────────────┘
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
| Slot | 内容 | UI 组件库引用 |
|
|
219
|
+
|------|------|--------------|
|
|
220
|
+
| CardTitleRow | `Avatar`(colorHash) + `CardTitle` | `components/avatar` + `components/card` |
|
|
221
|
+
| CardDescriptionRow | 描述 1 行 | `components/card` → `CardDescription` |
|
|
222
|
+
| CardFieldRow | 创建类型 | 内联 span |
|
|
223
|
+
| CardSupplementaryRow | 创建人 | 内联 span |
|
|
224
|
+
|
|
225
|
+
**变体 F:记忆体卡片**(记忆体列表入口)
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
┌─ ItemCard ──────────────────────────────┐
|
|
229
|
+
│ [Icon 32×32] 标题 (14px/500) │ ← CardTitleRow (统一脑形图标)
|
|
230
|
+
│ 描述文字 (12px, 1行截断) │ ← CardDescriptionRow
|
|
231
|
+
│ Code: m7R2kP9nQ1 │ ← CardFieldRow (等宽字体)
|
|
232
|
+
│ ──────────────────────────────────────── │
|
|
233
|
+
│ 👤 shaoshi 📅 2026-04-21 │ ← CardSupplementaryRow
|
|
234
|
+
│ │
|
|
235
|
+
│ [CardActionBar — hover-slidebar] │
|
|
236
|
+
└──────────────────────────────────────────┘
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
| Slot | 内容 | UI 组件库引用 |
|
|
240
|
+
|------|------|--------------|
|
|
241
|
+
| CardTitleRow | 图标 + `CardTitle` | `components/avatar` → `Avatar` + `AvatarFallback` |
|
|
242
|
+
| CardDescriptionRow | 描述 1 行 | `components/card` → `CardDescription` |
|
|
243
|
+
| CardFieldRow | Code(等宽字体 `font-mono`) | 内联 span |
|
|
244
|
+
| CardSupplementaryRow | 创建人 + 创建时间 | 内联 span |
|
|
245
|
+
|
|
246
|
+
### Pagination 规格(OpenTrek 定制)
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
250
|
+
│ 共 4 条 每页显示: [12 ▼] [‹] [1] [›] │
|
|
251
|
+
└─────────────────────────────────────────────────────────────┘
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
| 区域 | UI 组件库引用 | 说明 |
|
|
255
|
+
|------|--------------|------|
|
|
256
|
+
| 总数文字 "共 4 条" | 内联 `span` | 左对齐 |
|
|
257
|
+
| 每页条数选择器 | `components/select` → `Select` + `SelectTrigger`(size='sm') + `SelectContent` + `SelectItem` | 默认 12,可选 12/24/48 |
|
|
258
|
+
| 翻页按钮 | `components/pagination` → `Pagination` + `PaginationContent` + `PaginationItem` + `PaginationPrevious` + `PaginationLink`(isActive) + `PaginationNext` | 右对齐 |
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 3. OT-CL-2:复合卡片页面(FeatureCard + Table)
|
|
263
|
+
|
|
264
|
+
> 典型页面:记忆体 > 空间共用(记忆总览 Tab)
|
|
265
|
+
|
|
266
|
+
### 布局骨架
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
┌─ PageShell (components/page-shell) ──────────────────────────────────────┐
|
|
270
|
+
│ sidebar: Sidebar (components/sidebar) │
|
|
271
|
+
│ children: │
|
|
272
|
+
│ ┌─ ContentCard (components/card → Card + CardContent) ──────────────┐ │
|
|
273
|
+
│ │ Breadcrumb (components/breadcrumb → Breadcrumb + BreadcrumbItem): │ │
|
|
274
|
+
│ │ 记忆体 > 空间共用 │ │
|
|
275
|
+
│ │ │ │
|
|
276
|
+
│ │ Tabs (components/tabs → Tabs + TabsList[variant='line'] + TabsTrigger):│
|
|
277
|
+
│ │ [记忆总览*] [生成策略] [整理策略] [记忆动态] │ │
|
|
278
|
+
│ │ │ │
|
|
279
|
+
│ │ ┌── FeatureCardRow (4 张功能选择卡片) ────────────────────────────┐ │ │
|
|
280
|
+
│ │ │ ┌─FeatureCard─┐ ┌─FeatureCard─┐ ┌─FeatureCard─┐ ┌─FeatureCard─┐ │ │ │
|
|
281
|
+
│ │ │ │ [Icon] 常驻 │ │ [Icon] 检索 │ │ [Icon] 用户 │ │ [Icon] Skills│ │ │ │
|
|
282
|
+
│ │ │ │ 记忆* ✓ │ │ 记忆 │ │ 记忆 │ │ 记忆 │ │ │ │
|
|
283
|
+
│ │ │ │ 描述文字 │ │ 描述文字 │ │ 描述文字 │ │ 描述文字 │ │ │ │
|
|
284
|
+
│ │ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ │ │
|
|
285
|
+
│ │ │ * selected = border: 2px solid var(--primary) │ │ │
|
|
286
|
+
│ │ └────────────────────────────────────────────────────────────────┘ │ │
|
|
287
|
+
│ │ │ │
|
|
288
|
+
│ │ Alert (components/alert → Alert, variant='info'): │ │
|
|
289
|
+
│ │ ℹ️ 锁定的记忆不清理、不合井、不冻结。 │ │
|
|
290
|
+
│ │ │ │
|
|
291
|
+
│ │ ActionToolbar: │ │
|
|
292
|
+
│ │ .left-actions: │ │
|
|
293
|
+
│ │ Button (variant='default', color='primary') "+ 添加记忆" │ │
|
|
294
|
+
│ │ Span "已配置 2 条" │ │
|
|
295
|
+
│ │ .right-tools: │ │
|
|
296
|
+
│ │ Button (variant='outline') "转化为skill" │ │
|
|
297
|
+
│ │ │ │
|
|
298
|
+
│ │ DataTable (components/data-table): │ │
|
|
299
|
+
│ │ ☐ | 记忆code | 记忆内容 | 记忆状态 | 内容更新时间 | 操作 │ │
|
|
300
|
+
│ │ ☐ | w1R4jK6m | 技术栈偏好… | ●正常 | 2026-03-28 | 编辑|冻结|锁定|删除│
|
|
301
|
+
│ │ ☐ | y9P3xM7b | 沟通风格… | ●正常 | 2026-04-01 | 编辑|冻结|锁定|删除│
|
|
302
|
+
│ └────────────────────────────────────────────────────────────────────┘ │
|
|
303
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### FeatureCard 规格
|
|
307
|
+
|
|
308
|
+
> FeatureCard 是 ItemCard 的特殊变体,用于功能入口选择(如记忆类型分类)。与标准 ItemCard 不同,FeatureCard 横向排列 4 张,可点击选中,不含 CardActionBar。
|
|
309
|
+
|
|
310
|
+
| 属性 | 值 | UI 组件库引用 |
|
|
311
|
+
|------|-----|--------------|
|
|
312
|
+
| layout | 4 列横向 Grid | CSS Grid: `grid-template-columns: repeat(4, 1fr)` |
|
|
313
|
+
| gap | 16px | `gap: var(--card-gap, 16px)` |
|
|
314
|
+
| padding | 16px 20px | `padding: 16px 20px` |
|
|
315
|
+
| border (default) | `1px solid var(--gray-border)` | — |
|
|
316
|
+
| border (selected) | `2px solid var(--primary)` | — |
|
|
317
|
+
| borderRadius | `var(--radius-lg)` (12px) | — |
|
|
318
|
+
| background | `var(--card)` | — |
|
|
319
|
+
| cursor | pointer | — |
|
|
320
|
+
| icon | 32×32 线框图标(非 Avatar 色块) | `components/avatar` → `Avatar` + `AvatarFallback` |
|
|
321
|
+
| title | 14px / 500 / `var(--gray-primary)` | `components/typography` |
|
|
322
|
+
| description | 12px / 400 / `var(--gray-tertiary)` / 1 行 | `components/typography` |
|
|
323
|
+
| height | 自适应,约 80-100px | — |
|
|
324
|
+
| hover | `border-color: var(--primary)` + `box-shadow: var(--shadow-sm)` | — |
|
|
325
|
+
|
|
326
|
+
### Alert Info Banner 规格
|
|
327
|
+
|
|
328
|
+
| 属性 | 值 | UI 组件库引用 |
|
|
329
|
+
|------|-----|--------------|
|
|
330
|
+
| variant | info(蓝色) | `components/alert` → `Alert` |
|
|
331
|
+
| icon | ℹ️ info circle | — |
|
|
332
|
+
| text | 12px / `var(--gray-secondary)` | — |
|
|
333
|
+
| background | `hsl(var(--primary) / 0.05)` | — |
|
|
334
|
+
| border | `1px solid hsl(var(--primary) / 0.2)` | — |
|
|
335
|
+
| borderRadius | `var(--radius-md)` (8px) | — |
|
|
336
|
+
| padding | 12px 16px | — |
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## 4. OT-CL-3:简单卡片列表(无 Pagination)
|
|
341
|
+
|
|
342
|
+
> 典型页面:记忆体(列表入口页,4 张卡片无分页)
|
|
343
|
+
|
|
344
|
+
### 布局骨架
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
┌─ PageShell (components/page-shell) ──────────────────────────────────────┐
|
|
348
|
+
│ sidebar: Sidebar (components/sidebar) │
|
|
349
|
+
│ children: │
|
|
350
|
+
│ ┌─ ContentCard (components/card → Card + CardContent) ──────────────┐ │
|
|
351
|
+
│ │ PageHeader (components/page-header): │ │
|
|
352
|
+
│ │ 标题: "记忆体" │ │
|
|
353
|
+
│ │ │ │
|
|
354
|
+
│ │ ActionToolbar: │ │
|
|
355
|
+
│ │ .left-actions: │ │
|
|
356
|
+
│ │ Button (variant='default', color='primary') "+ 新建记忆体" │ │
|
|
357
|
+
│ │ .search-combo: │ │
|
|
358
|
+
│ │ Input (components/input) placeholder="搜索记忆体名称" │ │
|
|
359
|
+
│ │ .right-tools: │ │
|
|
360
|
+
│ │ Button (variant='outline') "对接三方Agent" │ │
|
|
361
|
+
│ │ │ │
|
|
362
|
+
│ │ CardGrid (CSS Grid, preset=standard, item-card-spec §2): │ │
|
|
363
|
+
│ │ ┌─ItemCard(F)─┐ ┌─ItemCard(F)─┐ ┌─ItemCard(F)─┐ │ │
|
|
364
|
+
│ │ │ 版本备忘 │ │ 空间共用 │ │ 数据分析经验 │ × 4 │ │
|
|
365
|
+
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
|
|
366
|
+
│ │ │ │
|
|
367
|
+
│ │ (* 无 Pagination — 数据量 ≤ 一页) │ │
|
|
368
|
+
│ └────────────────────────────────────────────────────────────────────┘ │
|
|
369
|
+
└──────────────────────────────────────────────────────────────────────────┘
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Pagination 显隐规则
|
|
373
|
+
|
|
374
|
+
| 条件 | Pagination | 说明 |
|
|
375
|
+
|------|------------|------|
|
|
376
|
+
| 数据量 ≤ 每页条数 | **隐藏** | 简单卡片列表(OT-CL-3)通常无分页 |
|
|
377
|
+
| 数据量 > 每页条数 | **显示** | Tab 导航卡片列表(OT-CL-1)始终显示 |
|
|
378
|
+
| 空数据 | **隐藏** | 使用 `components/empty` → `Empty` 替代 |
|
|
379
|
+
|
|
380
|
+
---
|
|
381
|
+
|
|
382
|
+
## 5. ActionToolbar 组合规则
|
|
383
|
+
|
|
384
|
+
> 基于 `../_shared/search-combo-spec.md` 通用规则,本节补充 OpenTrek 页面中 ActionToolbar 的实际组合方式。
|
|
385
|
+
|
|
386
|
+
### 5.1 DOM 结构
|
|
387
|
+
|
|
388
|
+
```html
|
|
389
|
+
<div class="action-toolbar" style="display:flex; flex-wrap:nowrap; gap:8px; align-items:center;">
|
|
390
|
+
<!-- 左侧主操作 -->
|
|
391
|
+
<div class="left-actions" style="display:flex; gap:8px;">
|
|
392
|
+
<Button variant="default" color="primary">+ 新建评估器</Button>
|
|
393
|
+
<!-- 可选辅助按钮 -->
|
|
394
|
+
<Button variant="outline">导入智能体</Button>
|
|
395
|
+
</div>
|
|
396
|
+
|
|
397
|
+
<!-- 搜索组合(与 left-actions 间距 20px) -->
|
|
398
|
+
<div class="search-combo" style="margin-left:12px;"> <!-- calc(20px - 8px) = 12px -->
|
|
399
|
+
<Input placeholder="搜索评估器名称…" />
|
|
400
|
+
</div>
|
|
401
|
+
|
|
402
|
+
<!-- 右侧工具 -->
|
|
403
|
+
<div class="right-tools" style="margin-left:auto; display:flex; gap:8px;">
|
|
404
|
+
<Select><SelectTrigger>全部 ▼</SelectTrigger></Select>
|
|
405
|
+
<!-- 或 Button -->
|
|
406
|
+
<Button variant="outline">对接三方Agent</Button>
|
|
407
|
+
</div>
|
|
408
|
+
</div>
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### 5.2 组件引用清单
|
|
412
|
+
|
|
413
|
+
| 子组件 | UI 组件库引用 | 常见属性 |
|
|
414
|
+
|--------|--------------|----------|
|
|
415
|
+
| 主操作按钮 | `components/button` → `Button` | `variant='default'`, `color='primary'`, `shape='round'` |
|
|
416
|
+
| 辅助操作按钮 | `components/button` → `Button` | `variant='outline'`, `shape='round'` |
|
|
417
|
+
| 搜索输入框 | `components/input` → `Input` | `size='default'`, placeholder 动态 |
|
|
418
|
+
| 下拉筛选 | `components/select` → `Select` + `SelectTrigger`(size='sm') + `SelectContent` + `SelectItem` | 用于 "全部 ▼" 下拉 |
|
|
419
|
+
| 筛选标签组 | `components/toggle-group` → `ToggleGroup`(type='single') + `ToggleGroupItem` | 互斥分类筛选 |
|
|
420
|
+
| 多选标签组 | `components/tag` → `CheckableTagGroup` + `CheckableTag` | 多选分类筛选 |
|
|
421
|
+
| 溢出菜单 | `components/dropdown-menu` → `DropdownMenu` + `DropdownMenuTrigger` + `DropdownMenuContent` + `DropdownMenuItem` | 操作 >3 个时 |
|
|
422
|
+
|
|
423
|
+
### 5.3 各页面 ActionToolbar 实例
|
|
424
|
+
|
|
425
|
+
| 页面 | left-actions | search-combo | right-tools |
|
|
426
|
+
|------|-------------|-------------|-------------|
|
|
427
|
+
| 评估器 | `Button`("+ 新建评估器") | `Input`("搜索评估器名称…") | — |
|
|
428
|
+
| 知识库 | `Button`("+ 创建知识库") | `Input`("搜索知识库名称…") | — |
|
|
429
|
+
| Skills Hub (空间) | `Button`("安装Skill") | `Input`("搜索Skills名称…") | `Select`("全部 ▼") |
|
|
430
|
+
| Skills Hub (共享) | — | `Input`("搜索Skills名称…") | — |
|
|
431
|
+
| Skills Hub (内置) | — | `Input`("搜索Skills名称…") | `Select`("全部 ▼") |
|
|
432
|
+
| 智能体 | `Button`("+ 新建智能体") + `Button`("导入智能体") + `Button`("获取导入秘钥凭证") | `Input`("按智能体名称筛选…") | — |
|
|
433
|
+
| 记忆体 (列表) | `Button`("+ 新建记忆体") | `Input`("搜索记忆体名称") | `Button`("对接三方Agent") |
|
|
434
|
+
| 记忆体 (总览) | `Button`("+ 添加记忆") + `Span`("已配置 2 条") | — | `Button`("转化为skill") |
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## 6. FilterRow 筛选行规则
|
|
439
|
+
|
|
440
|
+
> OpenTrek 中 FilterRow 有两种 UI 实现方案,按分类数量选择。
|
|
441
|
+
|
|
442
|
+
### 6.1 方案选择矩阵
|
|
443
|
+
|
|
444
|
+
| 分类数量 | 推荐方案 | UI 组件库引用 | 典型页面 |
|
|
445
|
+
|----------|----------|--------------|----------|
|
|
446
|
+
| 2-4 项 | **ToggleGroup** | `components/toggle-group` → `ToggleGroup`(type='single') + `ToggleGroupItem` | 评估器 |
|
|
447
|
+
| 5-8 项 | **CheckableTagGroup** | `components/tag` → `CheckableTagGroup` + `CheckableTag` | 智能体 |
|
|
448
|
+
| > 8 项 | **Select 下拉** | `components/select` → `Select` + `SelectTrigger` + `SelectContent` + `SelectItem` | — |
|
|
449
|
+
|
|
450
|
+
### 6.2 ToggleGroup 方案(评估器示例)
|
|
451
|
+
|
|
452
|
+
```html
|
|
453
|
+
<ToggleGroup type="single" defaultValue="all" spacing={2}>
|
|
454
|
+
<ToggleGroupItem value="all">全部</ToggleGroupItem>
|
|
455
|
+
<ToggleGroupItem value="llm">大模型</ToggleGroupItem>
|
|
456
|
+
<ToggleGroupItem value="code">代码</ToggleGroupItem>
|
|
457
|
+
</ToggleGroup>
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
**样式**:
|
|
461
|
+
- 选中项:`background: var(--primary); color: white`
|
|
462
|
+
- 未选中项:`background: transparent; color: var(--gray-secondary); border: 1px solid var(--gray-border)`
|
|
463
|
+
- 高度:28px
|
|
464
|
+
- borderRadius:`var(--radius-md)` (6px)
|
|
465
|
+
- padding:0 12px
|
|
466
|
+
|
|
467
|
+
### 6.3 CheckableTagGroup 方案(智能体示例)
|
|
468
|
+
|
|
469
|
+
```html
|
|
470
|
+
<CheckableTagGroup
|
|
471
|
+
value={selectedFilters}
|
|
472
|
+
onChange={setSelectedFilters}
|
|
473
|
+
options={[
|
|
474
|
+
{ label: '全部', value: 'all' },
|
|
475
|
+
{ label: 'TrekAgent', value: 'trek' },
|
|
476
|
+
{ label: '知识问答', value: 'qa' },
|
|
477
|
+
{ label: '工作流', value: 'workflow' },
|
|
478
|
+
{ label: '角色对话', value: 'role' },
|
|
479
|
+
{ label: '高代码', value: 'code' }
|
|
480
|
+
]}
|
|
481
|
+
/>
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
**样式**:
|
|
485
|
+
- 选中项:`background: hsl(var(--primary) / 0.1); color: var(--primary); border-color: var(--primary)`
|
|
486
|
+
- 未选中项:`background: transparent; color: var(--gray-secondary); border: 1px solid var(--gray-border)`
|
|
487
|
+
- 高度:28px
|
|
488
|
+
- gap:8px
|
|
489
|
+
|
|
490
|
+
### 6.4 FilterRow 位置规则
|
|
491
|
+
|
|
492
|
+
| 位置 | 条件 | 说明 |
|
|
493
|
+
|------|------|------|
|
|
494
|
+
| ActionToolbar 下方独立行 | 筛选项 ≥ 3 且与 SearchCombo 独立 | 评估器、知识库、智能体 |
|
|
495
|
+
| ActionToolbar 右侧内嵌 | 筛选项 ≤ 2 或作为 Select 下拉 | Skills Hub (内置) |
|
|
496
|
+
|
|
497
|
+
---
|
|
498
|
+
|
|
499
|
+
## 7. ItemCard 图标系统(Avatar 色块映射)
|
|
500
|
+
|
|
501
|
+
> 基于截图沉淀的 Avatar 色块使用规则。所有图标均使用 `components/avatar` → `Avatar` + `AvatarFallback`。
|
|
502
|
+
|
|
503
|
+
### 7.1 色块分配规则
|
|
504
|
+
|
|
505
|
+
| 业务场景 | 颜色 | 内容 | UI 组件库引用 |
|
|
506
|
+
|----------|------|------|--------------|
|
|
507
|
+
| 评估器 — 大模型类 | 绿色 | 首字 "客"/"多" | `Avatar` + `AvatarFallback`(className='bg-success') |
|
|
508
|
+
| 评估器 — 代码类 | 蓝色 | 首字 "代"/"知" | `Avatar` + `AvatarFallback`(className='bg-primary') |
|
|
509
|
+
| 知识库 — 文档类 | 紫色 | 文件夹图标 | `Avatar` + `AvatarFallback`(className='bg-data-4') |
|
|
510
|
+
| 知识库 — 数据类 | 蓝色 | 数据库图标 | `Avatar` + `AvatarFallback`(className='bg-primary') |
|
|
511
|
+
| 知识库 — 图文类 | 蓝色 | 图片图标 | `Avatar` + `AvatarFallback`(className='bg-primary') |
|
|
512
|
+
| 知识库 — 自定义 | 紫色 | 齿轮图标 | `Avatar` + `AvatarFallback`(className='bg-data-4') |
|
|
513
|
+
| 知识库 — 问答类 | 绿色 | 文件夹图标 | `Avatar` + `AvatarFallback`(className='bg-success') |
|
|
514
|
+
| 知识库 — 术语类 | 橙色 | 文档图标 | `Avatar` + `AvatarFallback`(className='bg-warning') |
|
|
515
|
+
| Skills — 各类 | 紫/黄/橙/蓝/绿 | 首字 | `Avatar` + `AvatarFallback`(hash 到预设色) |
|
|
516
|
+
| 智能体 — 各类 | 绿/橙/紫/黄/蓝 | 首字 | `Avatar` + `AvatarFallback`(hash 到预设色) |
|
|
517
|
+
| 记忆体 — 统一 | 浅蓝底 + 蓝色线框 | 脑形图标 | `Avatar` + `AvatarFallback`(统一图标) |
|
|
518
|
+
|
|
519
|
+
### 7.2 9 种预设色对照表
|
|
520
|
+
|
|
521
|
+
| 序号 | className | 用途示例 |
|
|
522
|
+
|------|-----------|----------|
|
|
523
|
+
| 1 | `bg-primary` | 蓝色主色 — 代码/数据类 |
|
|
524
|
+
| 2 | `bg-success` | 绿色 — 大模型/问答类 |
|
|
525
|
+
| 3 | `bg-type-mcp` | 靛蓝色 |
|
|
526
|
+
| 4 | `bg-warning` | 橙色 — 术语类/工具类 |
|
|
527
|
+
| 5 | `bg-data-8` | 数据色8 |
|
|
528
|
+
| 6 | `bg-data-1` | 数据色1 |
|
|
529
|
+
| 7 | `bg-destructive` | 红色 — 警告/风险 |
|
|
530
|
+
| 8 | `bg-brand-3` | 品牌色3 |
|
|
531
|
+
| 9 | `bg-data-4` | 紫色 — 文档/自定义类 |
|
|
532
|
+
|
|
533
|
+
> 当 avatar 字段为空时,使用 `name.charAt(0).toUpperCase()` hash 到上述 9 种预设色之一,保证相邻卡片尽量不重复。
|
|
534
|
+
|
|
535
|
+
---
|
|
536
|
+
|
|
537
|
+
## 8. 各页面截图 → 模式映射表
|
|
538
|
+
|
|
539
|
+
> 快速索引:遇到某个 OpenTrek 页面时,直接查表找到对应模式与变体。
|
|
540
|
+
|
|
541
|
+
| 页面 | Tab 结构 | 页面模式 | ActionToolbar 构成 | FilterRow | CardGrid preset | ItemCard 变体 | Pagination |
|
|
542
|
+
|------|----------|----------|-------------------|-----------|----------------|--------------|------------|
|
|
543
|
+
| 评估器 > 空间评估器 | 空间评估器 \| 内置评估器 | OT-CL-1 | 1 主按钮 + 搜索 | ToggleGroup(全部/大模型/代码) | standard (300px) | 变体 A(简单信息) | ✅ 12条/页 |
|
|
544
|
+
| 知识库 > 空间知识库 | 空间知识库 \| 共享知识库 | OT-CL-1 | 1 主按钮 + 搜索 | CheckableTagGroup(全部/文档/数据表/图文/问答/术语/自定义) | standard (300px) | 变体 B(状态卡片) | ✅ 12条/页 |
|
|
545
|
+
| Skills Hub > 空间Skills | 空间 \| 共享 \| 内置 | OT-CL-1 | 1 主按钮 + 搜索 | CheckableTagGroup(全部/文件/工具转化/工作流转化) | standard (300px) | 变体 C(技能卡片) | ✅ 12条/页 |
|
|
546
|
+
| Skills Hub > 共享Skills | 空间 \| 共享 \| 内置 | OT-CL-1 | 搜索 | — | standard (300px) | 变体 D(多标签技能) | ✅ 12条/页 |
|
|
547
|
+
| Skills Hub > 内置Skills | 空间 \| 共享 \| 内置 | OT-CL-1 | 搜索 | Select("全部 ▼") | standard (300px) | 变体 D(多标签技能) | ✅ 12条/页 |
|
|
548
|
+
| 智能体 > 智能体开发 | 智能体开发 \| 智能体模板 | OT-CL-1 | 3 按钮 + 搜索 | CheckableTagGroup(全部/TrekAgent/知识问答/工作流/角色对话/高代码) | standard (300px) | 变体 E(智能体卡片) | ✅ 12条/页 |
|
|
549
|
+
| 记忆体 (列表入口) | — | OT-CL-3 | 1 主按钮 + 搜索 + 1 右侧按钮 | — | standard (300px) | 变体 F(记忆体卡片) | ❌ |
|
|
550
|
+
| 记忆体 > 空间共用 | 记忆总览 \| 生成策略 \| 整理策略 \| 记忆动态 | OT-CL-2 | 1 主按钮 + 计数 \| 1 右侧按钮 | — | — (FeatureCard + Table) | FeatureCard | ❌ |
|
|
551
|
+
|
|
552
|
+
---
|
|
553
|
+
|
|
554
|
+
## 9. 视觉稿标注参考(源自 OpenTrek 真实截图)
|
|
555
|
+
|
|
556
|
+
> 以下数值从 8 张 OpenTrek 产品截图(智能体/Skills Hub/记忆体/知识库/评估器等页面)中精确提取,作为 AI 生成卡片页面时的像素级参照。
|
|
557
|
+
|
|
558
|
+
### 9.1 CardGrid 真实间距
|
|
559
|
+
|
|
560
|
+
| 属性 | 值 | token |
|
|
561
|
+
|------|---|-------|
|
|
562
|
+
| 列数(≥1400px 视窗) | 3 列 | auto-fill 自动计算 |
|
|
563
|
+
| 列数(1080-1400px) | 2-3 列 | — |
|
|
564
|
+
| 卡片水平间距 | 16px | `var(--card-gap)` |
|
|
565
|
+
| 卡片垂直间距 | 16px | `var(--card-gap)` |
|
|
566
|
+
| 容器(ContentCard)左右 padding | 20px | 分层 padding 模型 |
|
|
567
|
+
| 容器(ContentCard)上下 padding | 20px | — |
|
|
568
|
+
|
|
569
|
+
### 9.2 单张 ItemCard 精确尺寸
|
|
570
|
+
|
|
571
|
+
| 属性 | 值 | token |
|
|
572
|
+
|------|---|-------|
|
|
573
|
+
| border | 1px solid | `var(--gray-border)` |
|
|
574
|
+
| border-radius | 12px | `var(--radius-lg)` |
|
|
575
|
+
| padding-x (左右) | 20px | — |
|
|
576
|
+
| padding-top | 20px | — |
|
|
577
|
+
| padding-bottom | 16px(预留 ActionBar 绝对定位空间) | — |
|
|
578
|
+
| min-height (standard) | ~160px | 由内容撑开 |
|
|
579
|
+
| background | white | `var(--card)` |
|
|
580
|
+
|
|
581
|
+
### 9.3 CardTitleRow 标注(截图验证)
|
|
582
|
+
|
|
583
|
+
```
|
|
584
|
+
┌─ ItemCard ──────────────────────────────────────────────┐
|
|
585
|
+
│ ┌──────┐ Title (14px/500) [versionBadge] │
|
|
586
|
+
│ │ Icon │ subName (12px/400 gray) right-aligned │
|
|
587
|
+
│ │32×32 │ │
|
|
588
|
+
│ └──────┘ │
|
|
589
|
+
│ ← 12px → │
|
|
590
|
+
│ │
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
| 元素 | 规格 | 截图出处 |
|
|
594
|
+
|------|------|----------|
|
|
595
|
+
| icon → title 水平间距 | 12px | 全部 8 张 |
|
|
596
|
+
| icon size (standard) | 32×32 | 智能体/Skills Hub/知识库 |
|
|
597
|
+
| icon border-radius | 8px (`var(--input-radius)`) | 全部 |
|
|
598
|
+
| title font | 14px / font-weight 500 | 全部 |
|
|
599
|
+
| title color | `var(--gray-primary)` | 全部 |
|
|
600
|
+
| **subName**(可选;英文标识如 "code-generator") | 12px / 400 / `var(--gray-tertiary)` | Skills Hub (空间/共享/内置) |
|
|
601
|
+
| subName margin-top | 2px(紧贴 title 下方) | Skills Hub |
|
|
602
|
+
| **versionBadge**(可选;如 "v3.0.1") | 12px / 500 / `var(--gray-secondary)` / **右对齐** | Skills Hub 空间Skills |
|
|
603
|
+
| **statusBadge**(可选;如 "启用"/"禁用") | 12px / borderless Tag / 紧跟 title 后 8px | 知识库 |
|
|
604
|
+
| statusBadge "启用" | color: `var(--success)` / bg: `var(--success-bg)` | 知识库 |
|
|
605
|
+
| statusBadge "禁用" | color: `var(--gray-tertiary)` / bg: `var(--gray-fill)` | 知识库 |
|
|
606
|
+
|
|
607
|
+
### 9.4 CardDescriptionRow 标注
|
|
608
|
+
|
|
609
|
+
| 属性 | 值 | 截图出处 |
|
|
610
|
+
|------|---|----------|
|
|
611
|
+
| prefix | "描述:" (inline, 同色) | 全部含描述的卡片 |
|
|
612
|
+
| font-size | 12px | 全部 |
|
|
613
|
+
| color | `var(--gray-tertiary)` | 全部 |
|
|
614
|
+
| line-clamp | 1 (standard) / 2 (complex) | Skills Hub / 智能体 |
|
|
615
|
+
| margin-top (from title area) | 12px | 全部 |
|
|
616
|
+
|
|
617
|
+
### 9.5 CardFieldRow 标注
|
|
618
|
+
|
|
619
|
+
| 属性 | 值 | 截图出处 |
|
|
620
|
+
|------|---|----------|
|
|
621
|
+
| format | "labelIcon + label:value" 或 "label:value" | 全部 |
|
|
622
|
+
| label font | 12px / `var(--gray-tertiary)` | 全部 |
|
|
623
|
+
| value font | 12px / `var(--gray-secondary)` | 全部 |
|
|
624
|
+
| labelIcon size | 12-14px inline | Skills Hub (安装方式/安全扫描) |
|
|
625
|
+
| row 间 gap | 4px | 全部多字段卡片 |
|
|
626
|
+
| field 区距 description 区 | 8px | Skills Hub / 知识库 |
|
|
627
|
+
|
|
628
|
+
#### 行内状态指示器(inline status indicator)
|
|
629
|
+
|
|
630
|
+
> 出现在 CardFieldRow 的 value 位置,表达实时状态。
|
|
631
|
+
|
|
632
|
+
| 状态值 | 样式 | icon | 截图出处 |
|
|
633
|
+
|--------|------|------|----------|
|
|
634
|
+
| "安全" | color: `var(--success)` | 🛡 shield-check (12px) | Skills Hub |
|
|
635
|
+
| "有风险" | color: `var(--warning)` 或 `var(--destructive)` | ⚠ alert-triangle (12px) | Skills Hub |
|
|
636
|
+
| "已安装" | color: `var(--success)` | ✓ check (12px) | Skills Hub 共享/内置 |
|
|
637
|
+
| "有更新" | color: `var(--warning)` | ⊙ refresh-cw (12px) | Skills Hub 共享/内置 |
|
|
638
|
+
| "未安装" | color: `var(--gray-tertiary)` | 无 icon | Skills Hub 共享 |
|
|
639
|
+
|
|
640
|
+
```css
|
|
641
|
+
.field-status {
|
|
642
|
+
display: inline-flex;
|
|
643
|
+
align-items: center;
|
|
644
|
+
gap: 4px;
|
|
645
|
+
font-size: 12px;
|
|
646
|
+
font-weight: 500;
|
|
647
|
+
}
|
|
648
|
+
.field-status--success { color: var(--success); }
|
|
649
|
+
.field-status--warning { color: var(--warning); }
|
|
650
|
+
.field-status--danger { color: var(--destructive); }
|
|
651
|
+
.field-status--muted { color: var(--gray-tertiary); }
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
### 9.6 CardSupplementaryRow 标注
|
|
655
|
+
|
|
656
|
+
| 属性 | 值 | 截图出处 |
|
|
657
|
+
|------|---|----------|
|
|
658
|
+
| icon (calendar/user) | 12px / `var(--gray-quaternary)` | 全部 |
|
|
659
|
+
| label + value | 12px / `var(--gray-quaternary)` | 全部 |
|
|
660
|
+
| format | "📅 创建时间:YYYY-MM-DD" 或 "👤 创建人:xxx" | 全部 |
|
|
661
|
+
| margin-top (from last field) | 8px | 全部 |
|
|
662
|
+
| 多 supplementary 同行时 | gap 16px (inline-flex) | 未观察到多行 |
|
|
663
|
+
|
|
664
|
+
### 9.7 ActionToolbar ToggleGroup 筛选定位(截图验证)
|
|
665
|
+
|
|
666
|
+
> 8 张截图中有 6 张含右侧 ToggleGroup 筛选。
|
|
667
|
+
|
|
668
|
+
```
|
|
669
|
+
┌─ ActionToolbar ───────────────────────────────────────────────────────────┐
|
|
670
|
+
│ [+ 新建xx] [导入] [搜索框 🔍] [全部|TrekAgent|知识问答|...] │
|
|
671
|
+
│ ← left-actions → ← search-combo → ← right-tools (ml-auto) → │
|
|
672
|
+
└───────────────────────────────────────────────────────────────────────────┘
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
| 属性 | 值 | 截图出处 |
|
|
676
|
+
|------|---|----------|
|
|
677
|
+
| ToggleGroup 位置 | ActionToolbar 右侧 (margin-left: auto) | 智能体/Skills Hub/知识库/评估器 |
|
|
678
|
+
| 选中态 | `color: var(--primary)` + 底部 2px 指示线 | 全部 |
|
|
679
|
+
| 未选中态 | `color: var(--gray-secondary)` | 全部 |
|
|
680
|
+
| 选项间距 | 无 gap(紧密排列,选中项带底部 border 区分) | 全部 |
|
|
681
|
+
| font-size | 13px | 全部 |
|
|
682
|
+
| 高度 | 32px (与搜索框同高) | 全部 |
|
|
683
|
+
| 典型值 | "全部 \| TrekAgent \| 知识问答 \| 工作流 \| 角色对话 \| 高代码" | 智能体 |
|
|
684
|
+
| 典型值 | "全部 \| 文档 \| 数据表 \| 图文 \| 问答 \| 术语 \| 自定义" | 知识库 |
|
|
685
|
+
|
|
686
|
+
**组件引用**: 使用 `packages/ui/src/components/toggle-group`(ToggleGroup)实现,variant=`outline` 或自定义 tab-style。
|
|
687
|
+
|
|
688
|
+
### 9.8 Pagination 布局标注(截图验证)
|
|
689
|
+
|
|
690
|
+
> 仅评估器页面(图8)展示了 Pagination,其余页面数据量较多未显示底部。
|
|
691
|
+
|
|
692
|
+
```
|
|
693
|
+
┌─ Pagination ──────────────────────────────────────────────────┐
|
|
694
|
+
│ 共 4 条 每页显示: [12 ∨] [‹] [1] [›] │
|
|
695
|
+
│ ← left (total + pageSize) → ← right (navigator) → │
|
|
696
|
+
└───────────────────────────────────────────────────────────────┘
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
| 属性 | 值 |
|
|
700
|
+
|------|---|
|
|
701
|
+
| 总数文本 | "共 N 条" / 12px / `var(--gray-tertiary)` |
|
|
702
|
+
| 每页选择 | "每页显示: [12 ∨]" Select 组件 |
|
|
703
|
+
| 导航器 | 上一页 [页码] 下一页,右对齐 |
|
|
704
|
+
| 整体高度 | 40px |
|
|
705
|
+
| 距 CardGrid 顶部间距 | 16px |
|
|
706
|
+
|
|
707
|
+
**组件引用**: 使用 `packages/ui/src/components/pagination`(Pagination)+ `packages/ui/src/components/select`(Select,pageSize 选择)。
|
|
708
|
+
|
|
709
|
+
### 9.9 页面级间距总结(上→下顺序)
|
|
710
|
+
|
|
711
|
+
| 区域间 | 间距 | 说明 |
|
|
712
|
+
|--------|------|------|
|
|
713
|
+
| PageHeader → ActionToolbar | 16px | 标题到工具栏 |
|
|
714
|
+
| ActionToolbar → CardGrid | 16px | 工具栏到卡片网格 |
|
|
715
|
+
| CardGrid → Pagination | 16px | 最后一行卡片到分页 |
|
|
716
|
+
| Pagination → ContentCard bottom | 20px | 底部留白 |
|
|
717
|
+
| CardGrid 内部 gap | 16px × 16px | 行列等间距 |
|
|
718
|
+
|
|
719
|
+
### 9.10 Avatar 色块系统标注(截图实证)
|
|
720
|
+
|
|
721
|
+
> 8 张截图覆盖了 30+ 种不同卡片,avatar 色块系统如下:
|
|
722
|
+
|
|
723
|
+
| 色系 | 代表字符 | 近似 hex | token 映射 |
|
|
724
|
+
|------|----------|----------|-----------|
|
|
725
|
+
| 紫色 | 财、法 | #7C5CFC | `var(--primary)` |
|
|
726
|
+
| 红/粉 | 产、缺 | #F5597F | `var(--destructive)` 或 `var(--data-1)` |
|
|
727
|
+
| 橙色 | 投、客 | #FF8C42 | `var(--warning)` |
|
|
728
|
+
| 蓝色 | 合、自、日、代、文、网 | #3B82F6 | `var(--data-8)` |
|
|
729
|
+
| 青/蓝绿 | 记忆体全系列 | #06B6D4 | `var(--data-4)` |
|
|
730
|
+
| 绿色 | 回、自我、曙 | #22C55E | `var(--success)` |
|
|
731
|
+
| 黄色 | 天 | #F59E0B | `var(--warning)` 变体 |
|
|
732
|
+
| 灰/靛 | 票、T | #6B7280 | `var(--gray-secondary)` |
|
|
733
|
+
| 深紫 | 绩、多 | #A855F7 | `var(--brand-3)` |
|
|
734
|
+
|
|
735
|
+
**规则**:
|
|
736
|
+
- 同一页面内可出现多种颜色(按首字 hash 分配)
|
|
737
|
+
- icon 内文字:白色(#FFFFFF)、14px/600、首字母大写
|
|
738
|
+
- icon 圆角:8px(`var(--input-radius)`)
|
|
739
|
+
- glossy 光泽叠加层:参照 [item-card-spec.md §1.6](../_shared/item-card-spec.md#16-avatarpreset色块头像系统iconstyleavatar-且无图片时)
|