@pactor-app/chat 1.15.6 → 1.17.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/README.md +8 -4
- package/dist/index.cjs +1303 -578
- package/dist/index.d.cts +205 -43
- package/dist/index.d.ts +205 -43
- package/dist/index.js +1236 -526
- package/package.json +6 -6
- package/styles.css +322 -29
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pactor-app/chat",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"description": "Pactor chat: AI message rendering protocol (message model, streaming reducer, safe registry, capability action) and chat runtime view (ChatView / MessageBubble / PartRenderer / Composer / chat layout)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pactor",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@pactor-app/core": "1.
|
|
53
|
-
"@pactor-app/
|
|
54
|
-
"@pactor-app/
|
|
55
|
-
"@pactor-app/permission": "1.
|
|
56
|
-
"@pactor-app/
|
|
52
|
+
"@pactor-app/core": "1.17.0",
|
|
53
|
+
"@pactor-app/runtime": "1.17.0",
|
|
54
|
+
"@pactor-app/markdown": "1.17.0",
|
|
55
|
+
"@pactor-app/permission": "1.17.0",
|
|
56
|
+
"@pactor-app/ui": "1.17.0"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"react": ">=18"
|
package/styles.css
CHANGED
|
@@ -54,6 +54,17 @@
|
|
|
54
54
|
transparent
|
|
55
55
|
);
|
|
56
56
|
--pactor-chat-code-bg: var(--muted, #f6f7f9);
|
|
57
|
+
/* 产出物卡片图标盒 tone 配色(表格 green / 数据 amber / 代码 blue /
|
|
58
|
+
图片 violet;文档与兜底走 --pactor-chat-muted(-fg) 不入列)。
|
|
59
|
+
暗色值见下方 [data-pactor-theme='dark'] 载体块 */
|
|
60
|
+
--pactor-chat-artifact-tone-green-fg: #16a34a;
|
|
61
|
+
--pactor-chat-artifact-tone-green-bg: #dcfce7;
|
|
62
|
+
--pactor-chat-artifact-tone-blue-fg: #2563eb;
|
|
63
|
+
--pactor-chat-artifact-tone-blue-bg: #dbeafe;
|
|
64
|
+
--pactor-chat-artifact-tone-amber-fg: #d97706;
|
|
65
|
+
--pactor-chat-artifact-tone-amber-bg: #fef3c7;
|
|
66
|
+
--pactor-chat-artifact-tone-violet-fg: #7c3aed;
|
|
67
|
+
--pactor-chat-artifact-tone-violet-bg: #ede9fe;
|
|
57
68
|
/* 旧通用圆角令牌(保留兼容);新组件改用下方圆角阶梯 */
|
|
58
69
|
--pactor-chat-radius: 12px;
|
|
59
70
|
/* 圆角阶梯:sm 控件 / md 卡片 / lg 气泡 / xl composer */
|
|
@@ -75,10 +86,22 @@
|
|
|
75
86
|
默认 3rem),theme-studio 生成的皮肤可直接覆盖两者 */
|
|
76
87
|
--pactor-chat-shell-topbar-height: 44px;
|
|
77
88
|
--pactor-chat-shell-scrim: rgb(0 0 0 / 40%);
|
|
78
|
-
/* 产出物面板(spec: chat-artifact-panel
|
|
79
|
-
|
|
89
|
+
/* 产出物面板(spec: chat-artifact-panel):桌面固定宽右栏。
|
|
90
|
+
默认宽与对话列一致(--pactor-chat-content-width),
|
|
91
|
+
宽度夹取 [--pactor-chat-inspector-min-width, host 宽 2/3];
|
|
92
|
+
背景略深于聊天区底色,视觉上与消息流区分 */
|
|
93
|
+
--pactor-chat-inspector-width: var(--pactor-chat-content-width);
|
|
94
|
+
--pactor-chat-inspector-min-width: 480px;
|
|
95
|
+
--pactor-chat-inspector-bg: color-mix(
|
|
96
|
+
in srgb,
|
|
97
|
+
var(--pactor-chat-bg) 96%,
|
|
98
|
+
black
|
|
99
|
+
);
|
|
80
100
|
/* 对话列限宽居中(spec: chat-app-shell 嵌入契约):置 none 关闭限宽 */
|
|
81
101
|
--pactor-chat-content-width: 768px;
|
|
102
|
+
/* 对话列左右最小内间距(spec: chat-artifact-panel / 拖拽调宽):
|
|
103
|
+
面板调宽挤压剩余空间时,对话列左右始终保留该间距 */
|
|
104
|
+
--pactor-chat-content-gutter: 16px;
|
|
82
105
|
}
|
|
83
106
|
|
|
84
107
|
.pactor-chat-view {
|
|
@@ -103,6 +126,15 @@
|
|
|
103
126
|
0 1px 2px rgb(0 0 0 / 4%),
|
|
104
127
|
0 12px 32px -10px rgb(0 0 0 / 55%);
|
|
105
128
|
--pactor-chat-shell-scrim: rgb(0 0 0 / 55%);
|
|
129
|
+
/* 产出物卡片图标盒 tone 配色(暗色) */
|
|
130
|
+
--pactor-chat-artifact-tone-green-fg: #4ade80;
|
|
131
|
+
--pactor-chat-artifact-tone-green-bg: #14532d;
|
|
132
|
+
--pactor-chat-artifact-tone-blue-fg: #93c5fd;
|
|
133
|
+
--pactor-chat-artifact-tone-blue-bg: #1e3a8a;
|
|
134
|
+
--pactor-chat-artifact-tone-amber-fg: #fbbf24;
|
|
135
|
+
--pactor-chat-artifact-tone-amber-bg: #451a03;
|
|
136
|
+
--pactor-chat-artifact-tone-violet-fg: #c4b5fd;
|
|
137
|
+
--pactor-chat-artifact-tone-violet-bg: #2e1065;
|
|
106
138
|
}
|
|
107
139
|
|
|
108
140
|
/* 系统偏好暗色兜底:未显式设置 data-pactor-theme 时跟随系统
|
|
@@ -115,6 +147,15 @@
|
|
|
115
147
|
0 1px 2px rgb(0 0 0 / 4%),
|
|
116
148
|
0 12px 32px -10px rgb(0 0 0 / 55%);
|
|
117
149
|
--pactor-chat-shell-scrim: rgb(0 0 0 / 55%);
|
|
150
|
+
/* 产出物卡片图标盒 tone 配色(暗色) */
|
|
151
|
+
--pactor-chat-artifact-tone-green-fg: #4ade80;
|
|
152
|
+
--pactor-chat-artifact-tone-green-bg: #14532d;
|
|
153
|
+
--pactor-chat-artifact-tone-blue-fg: #93c5fd;
|
|
154
|
+
--pactor-chat-artifact-tone-blue-bg: #1e3a8a;
|
|
155
|
+
--pactor-chat-artifact-tone-amber-fg: #fbbf24;
|
|
156
|
+
--pactor-chat-artifact-tone-amber-bg: #451a03;
|
|
157
|
+
--pactor-chat-artifact-tone-violet-fg: #c4b5fd;
|
|
158
|
+
--pactor-chat-artifact-tone-violet-bg: #2e1065;
|
|
118
159
|
}
|
|
119
160
|
}
|
|
120
161
|
|
|
@@ -179,7 +220,8 @@
|
|
|
179
220
|
|
|
180
221
|
/* ------------------------------------------------------------
|
|
181
222
|
* ChatWorkspace(spec: chat-dsl-page):createChatWorkspace 工厂
|
|
182
|
-
* 返回组件的外层容器 =
|
|
223
|
+
* 返回组件的外层容器 = 对话列(ChatView);工作区头部(header)
|
|
224
|
+
* 上移为全宽容器的直接子级,不随对话列限宽。
|
|
183
225
|
* ------------------------------------------------------------ */
|
|
184
226
|
|
|
185
227
|
.pactor-chat-workspace {
|
|
@@ -188,8 +230,11 @@
|
|
|
188
230
|
height: 100%;
|
|
189
231
|
min-height: 0;
|
|
190
232
|
/* 对话列缺省限宽居中(spec: chat-app-shell 嵌入契约):
|
|
191
|
-
* shell content / 面板 host /
|
|
192
|
-
|
|
233
|
+
* shell content / 面板 host / 独立块级容器三场景统一生效。
|
|
234
|
+
* width 用 calc 预留 gutter——产物栏调宽挤压时,max-width 限宽
|
|
235
|
+
* 失效(剩余空间不足)后左右仍恒保留 --pactor-chat-content-gutter
|
|
236
|
+
* 内间距,不会贴到容器边缘或面板分隔线 */
|
|
237
|
+
width: calc(100% - 2 * var(--pactor-chat-content-gutter));
|
|
193
238
|
max-width: var(--pactor-chat-content-width);
|
|
194
239
|
margin-inline: auto;
|
|
195
240
|
color: var(--pactor-chat-fg);
|
|
@@ -197,6 +242,20 @@
|
|
|
197
242
|
line-height: 1.6;
|
|
198
243
|
}
|
|
199
244
|
|
|
245
|
+
/* header 承载容器(无产物面板路径):header 通栏 + 主区填满剩余高度 */
|
|
246
|
+
.pactor-chat-with-header {
|
|
247
|
+
display: flex;
|
|
248
|
+
flex-direction: column;
|
|
249
|
+
height: 100%;
|
|
250
|
+
min-height: 0;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.pactor-chat-with-header > .pactor-chat-shell,
|
|
254
|
+
.pactor-chat-with-header > .pactor-chat-workspace {
|
|
255
|
+
flex: 1;
|
|
256
|
+
min-height: 0;
|
|
257
|
+
}
|
|
258
|
+
|
|
200
259
|
.pactor-chat-workspace__header {
|
|
201
260
|
display: flex;
|
|
202
261
|
align-items: center;
|
|
@@ -298,10 +357,12 @@
|
|
|
298
357
|
* 面板关闭 / 未配置时不渲染 DOM(组合层保证)。
|
|
299
358
|
* ------------------------------------------------------------ */
|
|
300
359
|
|
|
301
|
-
/*
|
|
302
|
-
* host 在 shell content
|
|
360
|
+
/* 面板打开时的容器:header 通栏(host 直接子级)+ 行内容器
|
|
361
|
+
* (workspace / AppShell 与面板 flex 并排);host 在 shell content
|
|
362
|
+
* 内撑满剩余高度与宽度 */
|
|
303
363
|
.pactor-chat-inspector-host {
|
|
304
364
|
display: flex;
|
|
365
|
+
flex-direction: column;
|
|
305
366
|
flex: 1;
|
|
306
367
|
width: 100%;
|
|
307
368
|
min-height: 0;
|
|
@@ -309,26 +370,50 @@
|
|
|
309
370
|
background: var(--pactor-chat-bg);
|
|
310
371
|
}
|
|
311
372
|
|
|
312
|
-
/*
|
|
373
|
+
/* host 行内容器:对话列与面板的 flex 行(gutter 契约挂在行上——
|
|
374
|
+
* host padding 会同时作用于通栏 header) */
|
|
375
|
+
.pactor-chat-inspector-host__row {
|
|
376
|
+
display: flex;
|
|
377
|
+
flex: 1;
|
|
378
|
+
width: 100%;
|
|
379
|
+
min-height: 0;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/* 面板打开时行内直子:AppShell 填满剩余空间;workspace 只缩不伸,
|
|
313
383
|
* 宽度受 --pactor-chat-content-width 限宽,margin auto 在剩余空间内居中 */
|
|
314
|
-
.pactor-chat-inspector-
|
|
384
|
+
.pactor-chat-inspector-host__row > .pactor-chat-shell {
|
|
315
385
|
flex: 1;
|
|
316
386
|
min-width: 0;
|
|
317
387
|
}
|
|
318
388
|
|
|
319
|
-
.pactor-chat-inspector-
|
|
389
|
+
.pactor-chat-inspector-host__row > .pactor-chat-workspace {
|
|
320
390
|
flex: 0 1 auto;
|
|
321
391
|
min-width: 0;
|
|
322
392
|
}
|
|
323
393
|
|
|
394
|
+
/* 对话列左右最小内间距(gutter 契约,spec: chat-artifact-panel / 拖拽调宽):
|
|
395
|
+
* 对话列自身的 calc 宽度在 flex 行内会把面板宽度一并计入 100% 基准,
|
|
396
|
+
* shrink 后 margin auto 塌到 0;因此面板打开时的 gutter 由容器侧保证——
|
|
397
|
+
* 左:row padding-left;右:面板 margin-left(对话列与分隔线的间距)。
|
|
398
|
+
* 面板关闭(:has 不命中)时不加 row padding,避免与对话列 calc 重复计算 */
|
|
399
|
+
.pactor-chat-inspector-host__row:has(> .pactor-chat-inspector) {
|
|
400
|
+
padding-left: var(--pactor-chat-content-gutter);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.pactor-chat-inspector-host__row > .pactor-chat-inspector {
|
|
404
|
+
margin-left: var(--pactor-chat-content-gutter);
|
|
405
|
+
}
|
|
406
|
+
|
|
324
407
|
.pactor-chat-inspector {
|
|
325
408
|
position: relative;
|
|
326
409
|
display: flex;
|
|
327
410
|
flex-direction: column;
|
|
328
|
-
|
|
411
|
+
/* 默认宽对齐对话列;上限 host 宽 2/3(与拖拽夹取一致),下限 min-width 令牌 */
|
|
412
|
+
width: min(var(--pactor-chat-inspector-width), calc(100% * 2 / 3));
|
|
413
|
+
min-width: var(--pactor-chat-inspector-min-width);
|
|
329
414
|
flex-shrink: 0;
|
|
330
415
|
border-left: 1px solid var(--pactor-chat-border);
|
|
331
|
-
background: var(--pactor-chat-bg);
|
|
416
|
+
background: var(--pactor-chat-inspector-bg);
|
|
332
417
|
color: var(--pactor-chat-fg);
|
|
333
418
|
font-size: 14px;
|
|
334
419
|
line-height: 1.6;
|
|
@@ -368,9 +453,8 @@
|
|
|
368
453
|
font-weight: 600;
|
|
369
454
|
}
|
|
370
455
|
|
|
371
|
-
/* kind
|
|
372
|
-
.pactor-chat-inspector__kind
|
|
373
|
-
.pactor-chat-artifact-card__kind {
|
|
456
|
+
/* kind 角标 */
|
|
457
|
+
.pactor-chat-inspector__kind {
|
|
374
458
|
flex-shrink: 0;
|
|
375
459
|
padding: 0 6px;
|
|
376
460
|
border-radius: 999px;
|
|
@@ -384,6 +468,92 @@
|
|
|
384
468
|
flex-shrink: 0;
|
|
385
469
|
}
|
|
386
470
|
|
|
471
|
+
.pactor-chat-inspector__list-toggle {
|
|
472
|
+
flex-shrink: 0;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
/* 产物切换下拉(spec: chat-artifact-panel / 多产物切换):
|
|
476
|
+
* header 文件名处触发器(图标 + 名称 + chevron),占用标题区剩余宽度 */
|
|
477
|
+
.pactor-chat-inspector__header .dropdown-menu-trigger-wrap {
|
|
478
|
+
flex: 1;
|
|
479
|
+
min-width: 0;
|
|
480
|
+
display: flex;
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
.pactor-chat-inspector__menu-trigger {
|
|
484
|
+
display: inline-flex;
|
|
485
|
+
align-items: center;
|
|
486
|
+
gap: 6px;
|
|
487
|
+
min-width: 0;
|
|
488
|
+
max-width: 100%;
|
|
489
|
+
padding: 3px 6px;
|
|
490
|
+
border-radius: var(--pactor-chat-radius-sm);
|
|
491
|
+
cursor: pointer;
|
|
492
|
+
color: var(--pactor-chat-fg);
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
.pactor-chat-inspector__menu-trigger:hover {
|
|
496
|
+
background: var(--pactor-chat-muted);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
.pactor-chat-inspector__menu-trigger .pactor-chat-inspector__title {
|
|
500
|
+
min-width: 0;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/* 产物目录列表视图(spec: chat-artifact-panel / 产物目录):
|
|
504
|
+
* 目录(可折叠)+ 产物行(kind 图标 + 名称 + kind 角标) */
|
|
505
|
+
.pactor-chat-inspector__list {
|
|
506
|
+
list-style: none;
|
|
507
|
+
margin: 0;
|
|
508
|
+
padding: 0;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
.pactor-chat-inspector__list-children {
|
|
512
|
+
padding-left: 18px;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
.pactor-chat-inspector__list-folder,
|
|
516
|
+
.pactor-chat-inspector__list-item {
|
|
517
|
+
display: flex;
|
|
518
|
+
align-items: center;
|
|
519
|
+
gap: 8px;
|
|
520
|
+
width: 100%;
|
|
521
|
+
padding: 7px 8px;
|
|
522
|
+
border: none;
|
|
523
|
+
border-radius: var(--pactor-chat-radius-sm);
|
|
524
|
+
background: transparent;
|
|
525
|
+
color: var(--pactor-chat-fg);
|
|
526
|
+
font-size: 13px;
|
|
527
|
+
text-align: left;
|
|
528
|
+
cursor: pointer;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.pactor-chat-inspector__list-folder {
|
|
532
|
+
color: var(--pactor-chat-muted-fg);
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
.pactor-chat-inspector__list-folder:hover,
|
|
536
|
+
.pactor-chat-inspector__list-item:hover {
|
|
537
|
+
background: var(--pactor-chat-muted);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.pactor-chat-inspector__list-item[data-active='true'] {
|
|
541
|
+
background: var(--pactor-chat-muted);
|
|
542
|
+
font-weight: 600;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
.pactor-chat-inspector__list-folder[data-open='true'] .pactor-chat-trace__chevron {
|
|
546
|
+
transform: rotate(90deg);
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
.pactor-chat-inspector__list-item-title {
|
|
550
|
+
flex: 1;
|
|
551
|
+
min-width: 0;
|
|
552
|
+
overflow: hidden;
|
|
553
|
+
text-overflow: ellipsis;
|
|
554
|
+
white-space: nowrap;
|
|
555
|
+
}
|
|
556
|
+
|
|
387
557
|
.pactor-chat-inspector__body {
|
|
388
558
|
flex: 1;
|
|
389
559
|
min-height: 0;
|
|
@@ -396,6 +566,20 @@
|
|
|
396
566
|
position: relative;
|
|
397
567
|
}
|
|
398
568
|
|
|
569
|
+
/* 图片类产出物(spec: chat-artifact-panel / 常见文件预览):
|
|
570
|
+
* 居中自适应面板宽;svg 原始标记经 data URL 呈现 */
|
|
571
|
+
.pactor-chat-inspector__image {
|
|
572
|
+
display: flex;
|
|
573
|
+
justify-content: center;
|
|
574
|
+
align-items: flex-start;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
.pactor-chat-inspector__image img {
|
|
578
|
+
max-width: 100%;
|
|
579
|
+
height: auto;
|
|
580
|
+
border-radius: var(--pactor-chat-radius-sm);
|
|
581
|
+
}
|
|
582
|
+
|
|
399
583
|
.pactor-chat-inspector__code pre {
|
|
400
584
|
margin: 0;
|
|
401
585
|
padding: 10px 12px;
|
|
@@ -443,6 +627,9 @@
|
|
|
443
627
|
right: 0;
|
|
444
628
|
z-index: 50;
|
|
445
629
|
box-shadow: var(--pactor-chat-shadow-composer);
|
|
630
|
+
/* 抽屉形态:宽度不超出视口,下限令牌不适用 */
|
|
631
|
+
width: min(var(--pactor-chat-inspector-width), 92vw);
|
|
632
|
+
min-width: 0;
|
|
446
633
|
}
|
|
447
634
|
|
|
448
635
|
/* 窄屏覆盖抽屉形态:不显示拖拽手柄(spec scenario: 窄屏无拖拽手柄) */
|
|
@@ -457,23 +644,79 @@
|
|
|
457
644
|
|
|
458
645
|
/* ------------------------------------------------------------
|
|
459
646
|
* 产出物卡片(spec: chat-artifact-panel / artifact 消息 part):
|
|
460
|
-
* 消息流内 artifact part
|
|
647
|
+
* 消息流内 artifact part 的内联呈现——整卡可点击:着色图标盒
|
|
648
|
+
* (按文件类型 tone 取色)+ 标题 + 元信息行(尺寸 · 类型)+
|
|
649
|
+
* 右上箭头。结构与 ChatArtifactCard 内部组件一一对应。
|
|
461
650
|
* ------------------------------------------------------------ */
|
|
462
651
|
|
|
463
652
|
.pactor-chat-artifact-card {
|
|
464
653
|
display: flex;
|
|
465
654
|
align-items: center;
|
|
466
|
-
gap:
|
|
655
|
+
gap: 10px;
|
|
656
|
+
box-sizing: border-box;
|
|
657
|
+
width: 100%;
|
|
467
658
|
margin: 8px 0;
|
|
468
|
-
padding:
|
|
659
|
+
padding: 12px 14px;
|
|
469
660
|
border: 1px solid var(--pactor-chat-border);
|
|
470
661
|
border-radius: var(--pactor-chat-radius-md);
|
|
471
662
|
background: var(--pactor-chat-card);
|
|
663
|
+
color: var(--pactor-chat-fg);
|
|
472
664
|
box-shadow: var(--pactor-chat-shadow-sm);
|
|
665
|
+
font: inherit;
|
|
666
|
+
cursor: pointer;
|
|
667
|
+
text-align: left;
|
|
668
|
+
transition: background-color 0.15s ease;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
.pactor-chat-artifact-card:hover {
|
|
672
|
+
background: var(--pactor-chat-muted);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/* 着色图标盒(36px 圆角盒;tone 着色,暗色值见下方覆盖块) */
|
|
676
|
+
.pactor-chat-artifact-card__icon {
|
|
677
|
+
display: inline-flex;
|
|
678
|
+
align-items: center;
|
|
679
|
+
justify-content: center;
|
|
680
|
+
flex: none;
|
|
681
|
+
width: 36px;
|
|
682
|
+
height: 36px;
|
|
683
|
+
border-radius: var(--pactor-chat-radius-sm);
|
|
684
|
+
background: var(--pactor-chat-muted);
|
|
685
|
+
color: var(--pactor-chat-muted-fg);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
/* 按文件类型着色(tone 见 artifact.ts resolveArtifactIcon;色值走
|
|
689
|
+
* --pactor-chat-artifact-tone-* 令牌,暗色经载体块覆盖、皮肤可精调):
|
|
690
|
+
* 表格 green / 数据 amber / 代码 blue / 图片 violet / 文档与兜底 slate */
|
|
691
|
+
.pactor-chat-artifact-card--green .pactor-chat-artifact-card__icon {
|
|
692
|
+
color: var(--pactor-chat-artifact-tone-green-fg);
|
|
693
|
+
background: var(--pactor-chat-artifact-tone-green-bg);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
.pactor-chat-artifact-card--blue .pactor-chat-artifact-card__icon {
|
|
697
|
+
color: var(--pactor-chat-artifact-tone-blue-fg);
|
|
698
|
+
background: var(--pactor-chat-artifact-tone-blue-bg);
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.pactor-chat-artifact-card--amber .pactor-chat-artifact-card__icon {
|
|
702
|
+
color: var(--pactor-chat-artifact-tone-amber-fg);
|
|
703
|
+
background: var(--pactor-chat-artifact-tone-amber-bg);
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
.pactor-chat-artifact-card--violet .pactor-chat-artifact-card__icon {
|
|
707
|
+
color: var(--pactor-chat-artifact-tone-violet-fg);
|
|
708
|
+
background: var(--pactor-chat-artifact-tone-violet-bg);
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
.pactor-chat-artifact-card__text {
|
|
712
|
+
display: flex;
|
|
713
|
+
flex-direction: column;
|
|
714
|
+
gap: 2px;
|
|
715
|
+
flex: 1 1 auto;
|
|
716
|
+
min-width: 0;
|
|
473
717
|
}
|
|
474
718
|
|
|
475
719
|
.pactor-chat-artifact-card__title {
|
|
476
|
-
flex: 1;
|
|
477
720
|
min-width: 0;
|
|
478
721
|
overflow: hidden;
|
|
479
722
|
text-overflow: ellipsis;
|
|
@@ -482,23 +725,45 @@
|
|
|
482
725
|
font-size: 13px;
|
|
483
726
|
}
|
|
484
727
|
|
|
485
|
-
|
|
486
|
-
|
|
728
|
+
/* 元信息行(尺寸 · 类型标签) */
|
|
729
|
+
.pactor-chat-artifact-card__meta {
|
|
730
|
+
font-size: 11px;
|
|
731
|
+
color: var(--pactor-chat-muted-fg);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
/* 右上箭头(打开面板暗示) */
|
|
735
|
+
.pactor-chat-artifact-card__arrow {
|
|
736
|
+
flex: none;
|
|
737
|
+
color: var(--pactor-chat-muted-fg);
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
/* 连续产物卡片组(spec: chat-artifact-panel / 卡片区收起):
|
|
741
|
+
* 同一消息内连续 artifact part 合组;超 4 个收起,footer 右端
|
|
742
|
+
* 「展开 / 收起」+「查看所有产物(n) ›」(打开面板产物目录视图) */
|
|
743
|
+
.pactor-chat-artifact-group__footer {
|
|
744
|
+
display: flex;
|
|
745
|
+
justify-content: flex-end;
|
|
746
|
+
align-items: center;
|
|
747
|
+
gap: 12px;
|
|
748
|
+
margin: -2px 0 8px;
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
.pactor-chat-artifact-group__toggle,
|
|
752
|
+
.pactor-chat-artifact-group__all {
|
|
487
753
|
display: inline-flex;
|
|
488
754
|
align-items: center;
|
|
489
|
-
gap:
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
border: 1px solid var(--pactor-chat-border);
|
|
755
|
+
gap: 3px;
|
|
756
|
+
padding: 2px 4px;
|
|
757
|
+
border: none;
|
|
493
758
|
border-radius: var(--pactor-chat-radius-sm);
|
|
494
759
|
background: transparent;
|
|
495
760
|
color: var(--pactor-chat-primary);
|
|
496
761
|
font-size: 12px;
|
|
497
762
|
cursor: pointer;
|
|
498
|
-
transition: background 0.15s ease;
|
|
499
763
|
}
|
|
500
764
|
|
|
501
|
-
.pactor-chat-artifact-
|
|
765
|
+
.pactor-chat-artifact-group__toggle:hover,
|
|
766
|
+
.pactor-chat-artifact-group__all:hover {
|
|
502
767
|
background: var(--pactor-chat-muted);
|
|
503
768
|
}
|
|
504
769
|
|
|
@@ -800,6 +1065,7 @@
|
|
|
800
1065
|
.pactor-chat-message__actions {
|
|
801
1066
|
display: flex;
|
|
802
1067
|
gap: 4px;
|
|
1068
|
+
|
|
803
1069
|
opacity: 0;
|
|
804
1070
|
transition: opacity 0.15s ease;
|
|
805
1071
|
}
|
|
@@ -814,6 +1080,20 @@
|
|
|
814
1080
|
opacity: 1;
|
|
815
1081
|
}
|
|
816
1082
|
|
|
1083
|
+
/* assistant 终态消息底部行:操作条 + 常显时间戳 */
|
|
1084
|
+
.pactor-chat-message__footer {
|
|
1085
|
+
display: flex;
|
|
1086
|
+
align-items: center;
|
|
1087
|
+
gap: 8px;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
.pactor-chat-message__time {
|
|
1091
|
+
flex-shrink: 0;
|
|
1092
|
+
color: var(--pactor-chat-muted-fg);
|
|
1093
|
+
font-size: 11px;
|
|
1094
|
+
line-height: 18px;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
817
1097
|
/* user 消息内联编辑框(编辑重发) */
|
|
818
1098
|
.pactor-chat-message__edit {
|
|
819
1099
|
display: flex;
|
|
@@ -1725,14 +2005,27 @@ button.pactor-chat-trace__header:hover,
|
|
|
1725
2005
|
margin: 1em 0;
|
|
1726
2006
|
}
|
|
1727
2007
|
|
|
2008
|
+
.pactor-markdown h3 {
|
|
2009
|
+
font-size: 1.1em;
|
|
2010
|
+
}
|
|
2011
|
+
|
|
1728
2012
|
.pactor-markdown h2 {
|
|
1729
|
-
font-size: 1.
|
|
1730
|
-
font-weight: 600;
|
|
2013
|
+
font-size: 1.2em;
|
|
1731
2014
|
}
|
|
1732
2015
|
|
|
1733
2016
|
.pactor-markdown h1 {
|
|
1734
2017
|
font-size: 1.3rem;
|
|
2018
|
+
}
|
|
2019
|
+
|
|
2020
|
+
.pactor-markdown h1,
|
|
2021
|
+
.pactor-markdown h2,
|
|
2022
|
+
.pactor-markdown h3,
|
|
2023
|
+
.pactor-markdown h4,
|
|
2024
|
+
.pactor-markdown h5,
|
|
2025
|
+
.pactor-markdown h6 {
|
|
1735
2026
|
font-weight: 600;
|
|
2027
|
+
margin-top: .5em;
|
|
2028
|
+
margin-bottom: .5em;
|
|
1736
2029
|
}
|
|
1737
2030
|
|
|
1738
2031
|
.pactor-chat-thinking {
|