@nextclaw/ui 0.6.4 → 0.6.6

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.
Files changed (29) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/assets/{ChannelsList-D_sFrLcv.js → ChannelsList-VqzbAMCc.js} +1 -1
  3. package/dist/assets/ChatPage-CjZqsBmn.js +34 -0
  4. package/dist/assets/{DocBrowser-BjlljUNM.js → DocBrowser-DvU-iUeB.js} +1 -1
  5. package/dist/assets/{MarketplacePage-Dob7bQI5.js → MarketplacePage--wFfsNH0.js} +1 -1
  6. package/dist/assets/{ModelConfig-BesYoiw5.js → ModelConfig-cY5UsbfA.js} +1 -1
  7. package/dist/assets/{ProvidersList-NOoQyb_C.js → ProvidersList-qZwaFoFt.js} +1 -1
  8. package/dist/assets/{RuntimeConfig-CGLGP3_g.js → RuntimeConfig-BY2Axlte.js} +1 -1
  9. package/dist/assets/{SecretsConfig-DP_InKs3.js → SecretsConfig-B25P3J7V.js} +2 -2
  10. package/dist/assets/{SessionsConfig-XJbSPDZp.js → SessionsConfig-CxA9gIBw.js} +1 -1
  11. package/dist/assets/{card-Bg0moANO.js → card-CCSDsedj.js} +1 -1
  12. package/dist/assets/index-CD8a2KMH.js +2 -0
  13. package/dist/assets/index-DKOXGZc8.css +1 -0
  14. package/dist/assets/{label-DZuLJB_b.js → label-BxzAKPzU.js} +1 -1
  15. package/dist/assets/{logos-BDO7tmL-.js → logos-C3oHQ9kv.js} +1 -1
  16. package/dist/assets/{page-layout-BL29v3Ct.js → page-layout-DaLNSFKw.js} +1 -1
  17. package/dist/assets/{switch-DxH8lRYW.js → switch-DHOCEi5L.js} +1 -1
  18. package/dist/assets/{tabs-custom-BPd_6USz.js → tabs-custom-zdFy3fnK.js} +1 -1
  19. package/dist/assets/{useConfig-CJjG7ys-.js → useConfig-CDl9UK5m.js} +3 -3
  20. package/dist/assets/{useConfirmDialog-C-G5k7zK.js → useConfirmDialog-D3ZVa92J.js} +1 -1
  21. package/dist/assets/{vendor-Ylg6Wdt_.js → vendor-Dj2ULvht.js} +61 -56
  22. package/dist/index.html +3 -3
  23. package/package.json +1 -1
  24. package/src/components/chat/ChatThread.tsx +4 -2
  25. package/src/index.css +264 -29
  26. package/src/lib/i18n.ts +2 -0
  27. package/dist/assets/ChatPage-dDje_-4b.js +0 -32
  28. package/dist/assets/index-8RAlp6Gn.js +0 -2
  29. package/dist/assets/index-r3k4oB78.css +0 -1
package/dist/index.html CHANGED
@@ -6,9 +6,9 @@
6
6
  <link rel="icon" type="image/svg+xml" href="/logo.svg" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
8
8
  <title>NextClaw - 系统配置</title>
9
- <script type="module" crossorigin src="/assets/index-8RAlp6Gn.js"></script>
10
- <link rel="modulepreload" crossorigin href="/assets/vendor-Ylg6Wdt_.js">
11
- <link rel="stylesheet" crossorigin href="/assets/index-r3k4oB78.css">
9
+ <script type="module" crossorigin src="/assets/index-CD8a2KMH.js"></script>
10
+ <link rel="modulepreload" crossorigin href="/assets/vendor-Dj2ULvht.js">
11
+ <link rel="stylesheet" crossorigin href="/assets/index-DKOXGZc8.css">
12
12
  </head>
13
13
 
14
14
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextclaw/ui",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -222,8 +222,10 @@ function MarkdownBlock({ text, role }: { text: string; role: ChatRole }) {
222
222
  }
223
223
  return <img {...props} src={safeSrc} alt={alt || ''} loading="lazy" decoding="async" />;
224
224
  },
225
- code: ({ inline, className, children, ...props }) => {
226
- if (inline) {
225
+ code: ({ className, children, ...props }) => {
226
+ const plainText = String(children ?? '');
227
+ const isInlineCode = !className && !plainText.includes('\n');
228
+ if (isInlineCode) {
227
229
  return (
228
230
  <code {...props} className={cn('chat-inline-code', className)}>
229
231
  {children}
package/src/index.css CHANGED
@@ -184,70 +184,305 @@
184
184
  }
185
185
 
186
186
  .chat-markdown {
187
- font-size: 0.9rem;
188
- line-height: 1.6;
187
+ --md-text: #0f172a;
188
+ --md-muted: #334155;
189
+ --md-border: rgba(148, 163, 184, 0.34);
190
+ --md-link: hsl(var(--primary));
191
+ --md-inline-code-bg: rgba(15, 23, 42, 0.08);
192
+ --md-inline-code-color: #1e293b;
193
+ --md-blockquote-border: rgba(14, 165, 233, 0.45);
194
+ --md-blockquote-bg: rgba(14, 165, 233, 0.08);
195
+ --md-code-surface: #0b1220;
196
+ --md-code-toolbar-bg: rgba(15, 23, 42, 0.56);
197
+ --md-code-toolbar-border: rgba(148, 163, 184, 0.3);
198
+ --md-code-text: #e5e7eb;
199
+ --md-table-head-bg: rgba(148, 163, 184, 0.14);
200
+
201
+ color: var(--md-text);
202
+ font-size: 0.925rem;
203
+ line-height: 1.72;
189
204
  word-break: break-word;
190
205
  }
191
206
 
207
+ .chat-markdown-user {
208
+ --md-text: rgba(255, 255, 255, 0.97);
209
+ --md-muted: rgba(219, 234, 254, 0.92);
210
+ --md-border: rgba(191, 219, 254, 0.35);
211
+ --md-link: #dbeafe;
212
+ --md-inline-code-bg: rgba(15, 23, 42, 0.35);
213
+ --md-inline-code-color: #eff6ff;
214
+ --md-blockquote-border: rgba(191, 219, 254, 0.8);
215
+ --md-blockquote-bg: rgba(15, 23, 42, 0.2);
216
+ --md-code-surface: rgba(2, 6, 23, 0.92);
217
+ --md-code-toolbar-bg: rgba(2, 6, 23, 0.88);
218
+ --md-code-toolbar-border: rgba(191, 219, 254, 0.26);
219
+ --md-code-text: #e2e8f0;
220
+ --md-table-head-bg: rgba(191, 219, 254, 0.16);
221
+ }
222
+
192
223
  .chat-markdown > * + * {
193
- margin-top: 0.5rem;
224
+ margin-top: 0.72rem;
225
+ }
226
+
227
+ .chat-markdown p,
228
+ .chat-markdown li,
229
+ .chat-markdown blockquote {
230
+ color: var(--md-text);
194
231
  }
195
232
 
196
233
  .chat-markdown h1,
197
234
  .chat-markdown h2,
198
- .chat-markdown h3 {
199
- font-size: 1rem;
235
+ .chat-markdown h3,
236
+ .chat-markdown h4,
237
+ .chat-markdown h5,
238
+ .chat-markdown h6 {
239
+ margin: 0.2rem 0 0;
200
240
  font-weight: 700;
241
+ line-height: 1.35;
242
+ letter-spacing: -0.01em;
243
+ }
244
+
245
+ .chat-markdown h1 {
246
+ font-size: 1.22rem;
247
+ }
248
+
249
+ .chat-markdown h2 {
250
+ font-size: 1.12rem;
251
+ }
252
+
253
+ .chat-markdown h3 {
254
+ font-size: 1.02rem;
255
+ }
256
+
257
+ .chat-markdown h4,
258
+ .chat-markdown h5,
259
+ .chat-markdown h6 {
260
+ font-size: 0.96rem;
201
261
  }
202
262
 
203
263
  .chat-markdown ul,
204
264
  .chat-markdown ol {
205
- padding-left: 1.1rem;
265
+ margin: 0.35rem 0;
266
+ padding-left: 1.5rem;
267
+ list-style-position: outside;
268
+ }
269
+
270
+ .chat-markdown ul {
271
+ list-style-type: disc;
272
+ }
273
+
274
+ .chat-markdown ol {
275
+ list-style-type: decimal;
276
+ }
277
+
278
+ .chat-markdown ul ul {
279
+ list-style-type: circle;
280
+ }
281
+
282
+ .chat-markdown ul ul ul {
283
+ list-style-type: square;
284
+ }
285
+
286
+ .chat-markdown ol ol {
287
+ list-style-type: lower-alpha;
288
+ }
289
+
290
+ .chat-markdown ol ol ol {
291
+ list-style-type: lower-roman;
292
+ }
293
+
294
+ .chat-markdown li {
295
+ display: list-item;
296
+ }
297
+
298
+ .chat-markdown li::marker {
299
+ color: rgba(51, 65, 85, 0.9);
300
+ font-weight: 600;
301
+ }
302
+
303
+ .chat-markdown li + li {
304
+ margin-top: 0.25rem;
305
+ }
306
+
307
+ .chat-markdown li > p {
308
+ margin: 0;
309
+ }
310
+
311
+ .chat-markdown ul.contains-task-list,
312
+ .chat-markdown ol.contains-task-list {
313
+ list-style: none;
314
+ padding-left: 0.2rem;
315
+ }
316
+
317
+ .chat-markdown li.task-list-item {
318
+ display: flex;
319
+ align-items: flex-start;
320
+ gap: 0.52rem;
321
+ }
322
+
323
+ .chat-markdown-user li::marker {
324
+ color: rgba(219, 234, 254, 0.95);
325
+ }
326
+
327
+ .chat-markdown .chat-task-checkbox {
328
+ position: relative;
329
+ top: 0.2rem;
330
+ width: 0.92rem;
331
+ height: 0.92rem;
332
+ cursor: default;
333
+ }
334
+
335
+ .chat-markdown hr {
336
+ border: 0;
337
+ border-top: 1px solid var(--md-border);
338
+ margin: 0.92rem 0;
339
+ }
340
+
341
+ .chat-markdown a {
342
+ color: var(--md-link);
343
+ text-decoration-line: underline;
344
+ text-decoration-thickness: 1.2px;
345
+ text-underline-offset: 2px;
346
+ word-break: break-all;
347
+ }
348
+
349
+ .chat-markdown .chat-link-invalid {
350
+ color: var(--md-muted);
351
+ text-decoration-line: underline;
352
+ text-decoration-style: dotted;
206
353
  }
207
354
 
208
355
  .chat-markdown code {
209
356
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
210
- font-size: 0.8rem;
357
+ font-size: 0.82rem;
211
358
  }
212
359
 
360
+ .chat-markdown .chat-inline-code,
213
361
  .chat-markdown :not(pre) > code {
214
- padding: 0.1rem 0.3rem;
215
- border-radius: 0.35rem;
216
- background: rgba(148, 163, 184, 0.18);
362
+ padding: 0.1rem 0.35rem;
363
+ border-radius: 0.4rem;
364
+ background: var(--md-inline-code-bg);
365
+ color: var(--md-inline-code-color);
366
+ border: 1px solid var(--md-border);
367
+ font-weight: 520;
368
+ }
369
+
370
+ .chat-codeblock {
371
+ margin: 0.2rem 0 0.1rem;
372
+ border: 1px solid var(--md-code-toolbar-border);
373
+ border-radius: 0.78rem;
374
+ overflow: hidden;
375
+ background: var(--md-code-surface);
376
+ }
377
+
378
+ .chat-codeblock-toolbar {
379
+ display: flex;
380
+ align-items: center;
381
+ justify-content: space-between;
382
+ gap: 0.5rem;
383
+ padding: 0.43rem 0.58rem;
384
+ background: var(--md-code-toolbar-bg);
385
+ border-bottom: 1px solid var(--md-code-toolbar-border);
386
+ }
387
+
388
+ .chat-codeblock-language {
389
+ font-size: 0.68rem;
390
+ font-weight: 700;
391
+ text-transform: uppercase;
392
+ letter-spacing: 0.06em;
393
+ color: var(--md-code-text);
394
+ opacity: 0.8;
217
395
  }
218
396
 
219
- .chat-markdown pre {
397
+ .chat-codeblock-copy {
398
+ display: inline-flex;
399
+ align-items: center;
400
+ gap: 0.3rem;
401
+ font-size: 0.7rem;
402
+ font-weight: 600;
403
+ color: var(--md-code-text);
404
+ border: 1px solid var(--md-code-toolbar-border);
405
+ border-radius: 0.48rem;
406
+ padding: 0.18rem 0.36rem;
407
+ background: transparent;
408
+ cursor: pointer;
409
+ transition: background-color 0.15s ease, border-color 0.15s ease;
410
+ }
411
+
412
+ .chat-codeblock-copy:hover {
413
+ background: rgba(148, 163, 184, 0.2);
414
+ }
415
+
416
+ .chat-codeblock pre {
417
+ margin: 0;
418
+ padding: 0.75rem 0.82rem 0.8rem;
419
+ overflow-x: auto;
420
+ background: transparent;
421
+ }
422
+
423
+ .chat-codeblock code {
424
+ display: block;
425
+ min-width: max-content;
426
+ white-space: pre;
427
+ line-height: 1.58;
428
+ color: var(--md-code-text);
429
+ }
430
+
431
+ .chat-table-wrap {
432
+ margin: 0.15rem 0;
433
+ border: 1px solid var(--md-border);
434
+ border-radius: 0.72rem;
220
435
  overflow-x: auto;
221
- border-radius: 0.65rem;
222
- padding: 0.65rem 0.75rem;
223
- background: rgba(15, 23, 42, 0.9);
224
- color: #e2e8f0;
225
436
  }
226
437
 
227
438
  .chat-markdown table {
228
439
  width: 100%;
229
- border-collapse: collapse;
230
- font-size: 0.8rem;
440
+ min-width: 420px;
441
+ border-collapse: separate;
442
+ border-spacing: 0;
443
+ font-size: 0.82rem;
444
+ }
445
+
446
+ .chat-markdown thead {
447
+ background: var(--md-table-head-bg);
231
448
  }
232
449
 
233
450
  .chat-markdown th,
234
451
  .chat-markdown td {
235
- border: 1px solid rgba(148, 163, 184, 0.3);
236
- padding: 0.35rem 0.45rem;
452
+ padding: 0.45rem 0.58rem;
453
+ border-bottom: 1px solid var(--md-border);
454
+ text-align: left;
455
+ vertical-align: top;
237
456
  }
238
457
 
239
- .chat-markdown blockquote {
240
- border-left: 3px solid rgba(148, 163, 184, 0.55);
241
- padding-left: 0.65rem;
242
- color: rgba(30, 41, 59, 0.85);
458
+ .chat-markdown th + th,
459
+ .chat-markdown td + td {
460
+ border-left: 1px solid var(--md-border);
243
461
  }
244
462
 
245
- .chat-markdown-user a {
246
- color: #dbeafe;
247
- text-decoration: underline;
463
+ .chat-markdown tbody tr:last-child td {
464
+ border-bottom: none;
248
465
  }
249
466
 
250
- .chat-markdown-assistant a {
251
- color: hsl(var(--primary));
252
- text-decoration: underline;
467
+ .chat-markdown th {
468
+ font-weight: 650;
469
+ }
470
+
471
+ .chat-markdown strong {
472
+ font-weight: 650;
473
+ }
474
+
475
+ .chat-markdown img {
476
+ max-width: 100%;
477
+ border-radius: 0.75rem;
478
+ border: 1px solid var(--md-border);
479
+ }
480
+
481
+ .chat-markdown blockquote {
482
+ margin: 0.2rem 0;
483
+ border-left: 3px solid var(--md-blockquote-border);
484
+ border-radius: 0 0.55rem 0.55rem 0;
485
+ padding: 0.45rem 0.72rem;
486
+ background: var(--md-blockquote-bg);
487
+ color: var(--md-muted);
253
488
  }
package/src/lib/i18n.ts CHANGED
@@ -525,6 +525,8 @@ export const LABELS: Record<string, { zh: string; en: string }> = {
525
525
  chatToolOutput: { zh: '查看输出', en: 'View Output' },
526
526
  chatToolNoOutput: { zh: '无输出(执行完成)', en: 'No output (completed)' },
527
527
  chatReasoning: { zh: '查看推理内容', en: 'Show reasoning' },
528
+ chatCodeCopy: { zh: '复制代码', en: 'Copy' },
529
+ chatCodeCopied: { zh: '已复制', en: 'Copied' },
528
530
 
529
531
  // Chat Sidebar (unified)
530
532
  chatSidebarNewTask: { zh: '新任务', en: 'New Task' },