@tanstack/ai-devtools-core 0.3.6 → 0.3.8

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 (86) hide show
  1. package/dist/Shell/GHXECDJV.js +5056 -0
  2. package/dist/Shell/MUFU35SY.js +4242 -0
  3. package/dist/dev.js +11 -0
  4. package/dist/{esm/index.d.ts → index.d.ts} +7 -5
  5. package/dist/index.js +11 -0
  6. package/dist/production/Shell/GHXECDJV.js +5056 -0
  7. package/dist/production/Shell/MUFU35SY.js +4242 -0
  8. package/dist/production/dev.js +8 -0
  9. package/dist/production/index.d.ts +12 -0
  10. package/dist/production/index.js +8 -0
  11. package/dist/production/server.js +8 -0
  12. package/dist/server.js +11 -0
  13. package/package.json +45 -11
  14. package/src/{core.tsx → core.ts} +4 -5
  15. package/dist/esm/components/ConversationDetails.d.ts +0 -2
  16. package/dist/esm/components/ConversationDetails.js +0 -192
  17. package/dist/esm/components/ConversationDetails.js.map +0 -1
  18. package/dist/esm/components/ConversationsList.d.ts +0 -2
  19. package/dist/esm/components/ConversationsList.js +0 -30
  20. package/dist/esm/components/ConversationsList.js.map +0 -1
  21. package/dist/esm/components/Shell.d.ts +0 -1
  22. package/dist/esm/components/Shell.js +0 -94
  23. package/dist/esm/components/Shell.js.map +0 -1
  24. package/dist/esm/components/conversation/ActivityEventsTab.d.ts +0 -8
  25. package/dist/esm/components/conversation/ActivityEventsTab.js +0 -72
  26. package/dist/esm/components/conversation/ActivityEventsTab.js.map +0 -1
  27. package/dist/esm/components/conversation/ChunkBadges.d.ts +0 -7
  28. package/dist/esm/components/conversation/ChunkBadges.js +0 -54
  29. package/dist/esm/components/conversation/ChunkBadges.js.map +0 -1
  30. package/dist/esm/components/conversation/ChunkItem.d.ts +0 -9
  31. package/dist/esm/components/conversation/ChunkItem.js +0 -247
  32. package/dist/esm/components/conversation/ChunkItem.js.map +0 -1
  33. package/dist/esm/components/conversation/ChunksCollapsible.d.ts +0 -7
  34. package/dist/esm/components/conversation/ChunksCollapsible.js +0 -77
  35. package/dist/esm/components/conversation/ChunksCollapsible.js.map +0 -1
  36. package/dist/esm/components/conversation/ChunksTab.d.ts +0 -8
  37. package/dist/esm/components/conversation/ChunksTab.js +0 -87
  38. package/dist/esm/components/conversation/ChunksTab.js.map +0 -1
  39. package/dist/esm/components/conversation/ConversationHeader.d.ts +0 -7
  40. package/dist/esm/components/conversation/ConversationHeader.js +0 -230
  41. package/dist/esm/components/conversation/ConversationHeader.js.map +0 -1
  42. package/dist/esm/components/conversation/ConversationTabs.d.ts +0 -10
  43. package/dist/esm/components/conversation/ConversationTabs.js +0 -176
  44. package/dist/esm/components/conversation/ConversationTabs.js.map +0 -1
  45. package/dist/esm/components/conversation/MessageCard.d.ts +0 -7
  46. package/dist/esm/components/conversation/MessageCard.js +0 -207
  47. package/dist/esm/components/conversation/MessageCard.js.map +0 -1
  48. package/dist/esm/components/conversation/MessageGroup.d.ts +0 -15
  49. package/dist/esm/components/conversation/MessageGroup.js +0 -119
  50. package/dist/esm/components/conversation/MessageGroup.js.map +0 -1
  51. package/dist/esm/components/conversation/MessagesTab.d.ts +0 -7
  52. package/dist/esm/components/conversation/MessagesTab.js +0 -37
  53. package/dist/esm/components/conversation/MessagesTab.js.map +0 -1
  54. package/dist/esm/components/conversation/SummariesTab.d.ts +0 -7
  55. package/dist/esm/components/conversation/SummariesTab.js +0 -110
  56. package/dist/esm/components/conversation/SummariesTab.js.map +0 -1
  57. package/dist/esm/components/conversation/ToolCallDisplay.d.ts +0 -7
  58. package/dist/esm/components/conversation/ToolCallDisplay.js +0 -123
  59. package/dist/esm/components/conversation/ToolCallDisplay.js.map +0 -1
  60. package/dist/esm/components/conversation/index.d.ts +0 -7
  61. package/dist/esm/components/list/ConversationRow.d.ts +0 -7
  62. package/dist/esm/components/list/ConversationRow.js +0 -122
  63. package/dist/esm/components/list/ConversationRow.js.map +0 -1
  64. package/dist/esm/components/list/index.d.ts +0 -1
  65. package/dist/esm/components/utils/format.d.ts +0 -6
  66. package/dist/esm/components/utils/format.js +0 -68
  67. package/dist/esm/components/utils/format.js.map +0 -1
  68. package/dist/esm/components/utils/index.d.ts +0 -1
  69. package/dist/esm/core.d.ts +0 -22
  70. package/dist/esm/core.js +0 -9
  71. package/dist/esm/core.js.map +0 -1
  72. package/dist/esm/index.js +0 -6
  73. package/dist/esm/index.js.map +0 -1
  74. package/dist/esm/production.d.ts +0 -2
  75. package/dist/esm/production.js +0 -5
  76. package/dist/esm/production.js.map +0 -1
  77. package/dist/esm/store/ai-context.d.ts +0 -135
  78. package/dist/esm/store/ai-context.js +0 -1238
  79. package/dist/esm/store/ai-context.js.map +0 -1
  80. package/dist/esm/store/ai-store.d.ts +0 -1
  81. package/dist/esm/styles/tokens.d.ts +0 -298
  82. package/dist/esm/styles/tokens.js +0 -107
  83. package/dist/esm/styles/tokens.js.map +0 -1
  84. package/dist/esm/styles/use-styles.d.ts +0 -233
  85. package/dist/esm/styles/use-styles.js +0 -1602
  86. package/dist/esm/styles/use-styles.js.map +0 -1
@@ -1,1602 +0,0 @@
1
- import * as goober from "goober";
2
- import { createSignal, createEffect } from "solid-js";
3
- import { useTheme } from "@tanstack/devtools-ui";
4
- import { tokens } from "./tokens.js";
5
- const stylesFactory = (theme) => {
6
- const { colors, font, size, alpha, border } = tokens;
7
- const { fontFamily, size: fontSize } = font;
8
- const css = goober.css;
9
- const t = (light, dark) => theme === "light" ? light : dark;
10
- return {
11
- mainContainer: css`
12
- display: flex;
13
- flex: 1;
14
- min-height: 80%;
15
- overflow: hidden;
16
- padding: ${size[2]};
17
- `,
18
- dragHandle: css`
19
- width: 8px;
20
- background: ${t(colors.gray[300], colors.darkGray[600])};
21
- cursor: col-resize;
22
- position: relative;
23
- transition: all 0.2s ease;
24
- user-select: none;
25
- pointer-events: all;
26
- margin: 0 ${size[1]};
27
- border-radius: 2px;
28
-
29
- &:hover {
30
- background: ${t(colors.blue[600], colors.blue[500])};
31
- margin: 0 ${size[1]};
32
- }
33
-
34
- &.dragging {
35
- background: ${t(colors.blue[700], colors.blue[600])};
36
- margin: 0 ${size[1]};
37
- }
38
-
39
- &::after {
40
- content: '';
41
- position: absolute;
42
- top: 50%;
43
- left: 50%;
44
- transform: translate(-50%, -50%);
45
- width: 2px;
46
- height: 20px;
47
- background: ${t(colors.gray[400], colors.darkGray[400])};
48
- border-radius: 1px;
49
- pointer-events: none;
50
- }
51
-
52
- &:hover::after,
53
- &.dragging::after {
54
- background: ${t(colors.blue[500], colors.blue[300])};
55
- }
56
- `,
57
- leftPanel: css`
58
- background: ${t(colors.gray[100], colors.darkGray[800])};
59
- border-radius: ${border.radius.lg};
60
- border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
61
- display: flex;
62
- flex-direction: column;
63
- overflow: hidden;
64
- min-height: 0;
65
- flex-shrink: 0;
66
- `,
67
- rightPanel: css`
68
- background: ${t(colors.gray[100], colors.darkGray[800])};
69
- border-radius: ${border.radius.lg};
70
- border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
71
- display: flex;
72
- flex-direction: column;
73
- overflow: hidden;
74
- min-height: 0;
75
- flex: 1;
76
- `,
77
- panelHeader: css`
78
- font-size: ${fontSize.md};
79
- font-weight: ${font.weight.bold};
80
- color: ${t(colors.blue[700], colors.blue[400])};
81
- padding: ${size[2]};
82
- border-bottom: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
83
- background: ${t(colors.gray[100], colors.darkGray[800])};
84
- flex-shrink: 0;
85
- `,
86
- utilList: css`
87
- flex: 1;
88
- overflow-y: auto;
89
- padding: ${size[1]};
90
- min-height: 0;
91
- `,
92
- utilGroup: css`
93
- margin-bottom: ${size[2]};
94
- `,
95
- utilGroupHeader: css`
96
- font-size: ${fontSize.xs};
97
- font-weight: ${font.weight.semibold};
98
- color: ${t(colors.gray[600], colors.gray[400])};
99
- text-transform: uppercase;
100
- letter-spacing: 0.05em;
101
- margin-bottom: ${size[1]};
102
- padding: ${size[1]} ${size[2]};
103
- background: ${t(colors.gray[200], colors.darkGray[700])};
104
- border-radius: ${border.radius.md};
105
- `,
106
- utilRow: css`
107
- display: flex;
108
- justify-content: space-between;
109
- align-items: center;
110
- padding: ${size[2]};
111
- margin-bottom: ${size[1]};
112
- background: ${t(colors.gray[200], colors.darkGray[700])};
113
- border-radius: ${border.radius.md};
114
- cursor: pointer;
115
- transition: all 0.2s ease;
116
- border: 1px solid transparent;
117
-
118
- &:hover {
119
- background: ${t(colors.gray[300], colors.darkGray[600])};
120
- border-color: ${t(colors.gray[400], colors.darkGray[500])};
121
- }
122
- `,
123
- utilRowSelected: css`
124
- background: ${t(colors.blue[100], colors.blue[900] + alpha[20])};
125
- border-color: ${t(colors.blue[600], colors.blue[500])};
126
- box-shadow: 0 0 0 1px
127
- ${t(colors.blue[600] + alpha[30], colors.blue[500] + alpha[30])};
128
- `,
129
- utilKey: css`
130
- font-family: ${fontFamily.mono};
131
- font-size: ${fontSize.xs};
132
- color: ${t(colors.gray[900], colors.gray[100])};
133
- flex: 1;
134
- overflow: hidden;
135
- text-overflow: ellipsis;
136
- white-space: nowrap;
137
- `,
138
- utilStatus: css`
139
- font-size: ${fontSize.xs};
140
- color: ${t(colors.gray[600], colors.gray[400])};
141
- text-transform: uppercase;
142
- letter-spacing: 0.05em;
143
- padding: ${size[1]} ${size[1]};
144
- background: ${t(colors.gray[300], colors.darkGray[600])};
145
- border-radius: ${border.radius.sm};
146
- margin-left: ${size[1]};
147
- `,
148
- stateDetails: css`
149
- flex: 1;
150
- overflow-y: auto;
151
- padding: ${size[2]};
152
- min-height: 0;
153
- `,
154
- stateHeader: css`
155
- margin-bottom: ${size[2]};
156
- padding-bottom: ${size[2]};
157
- border-bottom: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
158
- `,
159
- stateTitle: css`
160
- font-size: ${fontSize.md};
161
- font-weight: ${font.weight.bold};
162
- color: ${t(colors.blue[700], colors.blue[400])};
163
- margin-bottom: ${size[1]};
164
- `,
165
- stateKey: css`
166
- font-family: ${fontFamily.mono};
167
- font-size: ${fontSize.xs};
168
- color: ${t(colors.gray[600], colors.gray[400])};
169
- word-break: break-all;
170
- `,
171
- stateContent: css`
172
- background: ${t(colors.gray[100], colors.darkGray[700])};
173
- border-radius: ${border.radius.md};
174
- padding: ${size[2]};
175
- border: 1px solid ${t(colors.gray[300], colors.darkGray[600])};
176
- `,
177
- detailsGrid: css`
178
- display: grid;
179
- grid-template-columns: 1fr;
180
- gap: ${size[2]};
181
- align-items: start;
182
- `,
183
- detailSection: css`
184
- background: ${t(colors.white, colors.darkGray[700])};
185
- border: 1px solid ${t(colors.gray[300], colors.darkGray[600])};
186
- border-radius: ${border.radius.md};
187
- padding: ${size[2]};
188
- `,
189
- detailSectionHeader: css`
190
- font-size: ${fontSize.sm};
191
- font-weight: ${font.weight.bold};
192
- color: ${t(colors.gray[800], colors.gray[200])};
193
- margin-bottom: ${size[1]};
194
- text-transform: uppercase;
195
- letter-spacing: 0.04em;
196
- `,
197
- actionsRow: css`
198
- display: flex;
199
- flex-wrap: wrap;
200
- gap: ${size[2]};
201
- `,
202
- actionButton: css`
203
- display: inline-flex;
204
- align-items: center;
205
- gap: ${size[1]};
206
- padding: ${size[1]} ${size[2]};
207
- border-radius: ${border.radius.md};
208
- border: 1px solid ${t(colors.gray[300], colors.darkGray[500])};
209
- background: ${t(colors.gray[200], colors.darkGray[600])};
210
- color: ${t(colors.gray[900], colors.gray[100])};
211
- font-size: ${fontSize.xs};
212
- cursor: pointer;
213
- user-select: none;
214
- transition:
215
- background 0.15s,
216
- border-color 0.15s;
217
- &:hover {
218
- background: ${t(colors.gray[300], colors.darkGray[500])};
219
- border-color: ${t(colors.gray[400], colors.darkGray[400])};
220
- }
221
- &:disabled {
222
- opacity: 0.5;
223
- cursor: not-allowed;
224
- &:hover {
225
- background: ${t(colors.gray[200], colors.darkGray[600])};
226
- border-color: ${t(colors.gray[300], colors.darkGray[500])};
227
- }
228
- }
229
- `,
230
- actionDotBlue: css`
231
- width: 6px;
232
- height: 6px;
233
- border-radius: 9999px;
234
- background: ${colors.blue[400]};
235
- `,
236
- actionDotGreen: css`
237
- width: 6px;
238
- height: 6px;
239
- border-radius: 9999px;
240
- background: ${colors.green[400]};
241
- `,
242
- actionDotRed: css`
243
- width: 6px;
244
- height: 6px;
245
- border-radius: 9999px;
246
- background: ${colors.red[400]};
247
- `,
248
- actionDotYellow: css`
249
- width: 6px;
250
- height: 6px;
251
- border-radius: 9999px;
252
- background: ${colors.yellow[400]};
253
- `,
254
- actionDotOrange: css`
255
- width: 6px;
256
- height: 6px;
257
- border-radius: 9999px;
258
- background: ${colors.pink[400]};
259
- `,
260
- actionDotPurple: css`
261
- width: 6px;
262
- height: 6px;
263
- border-radius: 9999px;
264
- background: ${colors.purple[400]};
265
- `,
266
- infoGrid: css`
267
- display: grid;
268
- grid-template-columns: auto 1fr;
269
- gap: ${size[1]};
270
- row-gap: ${size[1]};
271
- align-items: center;
272
- `,
273
- infoLabel: css`
274
- color: ${t(colors.gray[600], colors.gray[400])};
275
- font-size: ${fontSize.xs};
276
- text-transform: uppercase;
277
- letter-spacing: 0.05em;
278
- `,
279
- infoValueMono: css`
280
- font-family: ${fontFamily.mono};
281
- font-size: ${fontSize.xs};
282
- color: ${t(colors.gray[900], colors.gray[100])};
283
- word-break: break-all;
284
- `,
285
- noSelection: css`
286
- flex: 1;
287
- display: flex;
288
- align-items: center;
289
- justify-content: center;
290
- color: ${t(colors.gray[500], colors.gray[500])};
291
- font-style: italic;
292
- text-align: center;
293
- padding: ${size[4]};
294
- `,
295
- // Keep existing styles for backward compatibility
296
- sectionContainer: css`
297
- display: flex;
298
- flex-wrap: wrap;
299
- gap: ${size[4]};
300
- `,
301
- section: css`
302
- background: ${t(colors.gray[100], colors.darkGray[800])};
303
- border-radius: ${border.radius.lg};
304
- box-shadow: ${tokens.shadow.md(
305
- t(colors.gray[400] + alpha[80], colors.black + alpha[80])
306
- )};
307
- padding: ${size[4]};
308
- margin-bottom: ${size[4]};
309
- border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
310
- min-width: 0;
311
- max-width: 33%;
312
- max-height: fit-content;
313
- `,
314
- sectionHeader: css`
315
- font-size: ${fontSize.lg};
316
- font-weight: ${font.weight.bold};
317
- margin-bottom: ${size[2]};
318
- color: ${t(colors.blue[600], colors.blue[400])};
319
- letter-spacing: 0.01em;
320
- display: flex;
321
- align-items: center;
322
- gap: ${size[2]};
323
- `,
324
- sectionEmpty: css`
325
- color: ${t(colors.gray[500], colors.gray[500])};
326
- font-size: ${fontSize.sm};
327
- font-style: italic;
328
- margin: ${size[2]} 0;
329
- `,
330
- instanceList: css`
331
- display: flex;
332
- flex-direction: column;
333
- gap: ${size[2]};
334
- background: ${t(colors.gray[200], colors.darkGray[700])};
335
- border: 1px solid ${t(colors.gray[300], colors.darkGray[600])};
336
- `,
337
- instanceCard: css`
338
- background: ${t(colors.gray[200], colors.darkGray[700])};
339
- border-radius: ${border.radius.md};
340
- padding: ${size[3]};
341
- border: 1px solid ${t(colors.gray[300], colors.darkGray[600])};
342
- font-size: ${fontSize.sm};
343
- color: ${t(colors.gray[900], colors.gray[100])};
344
- font-family: ${fontFamily.mono};
345
- overflow-x: auto;
346
- transition:
347
- box-shadow 0.3s,
348
- background 0.3s;
349
- `,
350
- // Shell component styles
351
- shell: {
352
- sectionHeader: css`
353
- padding: ${size[3]} ${size[4]};
354
- font-size: ${fontSize.sm};
355
- font-weight: ${font.weight.semibold};
356
- color: ${t(colors.gray[100], colors.gray[200])};
357
- text-transform: uppercase;
358
- letter-spacing: 0.5px;
359
- text-align: center;
360
- background: ${t(colors.gray[700], colors.darkGray[600])};
361
- border-bottom: 1px solid ${t(colors.gray[600], colors.darkGray[500])};
362
- `,
363
- filterContainer: css`
364
- display: flex;
365
- flex-direction: column;
366
- gap: ${size[2]};
367
- padding: ${size[3]};
368
- border-bottom: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
369
- `,
370
- filterButtonsRow: css`
371
- display: flex;
372
- gap: ${size[1.5]};
373
- flex-wrap: wrap;
374
- `,
375
- filterButton: css`
376
- display: inline-flex;
377
- align-items: center;
378
- gap: ${size[1]};
379
- padding: ${size[1]} ${size[2]};
380
- border-radius: ${border.radius.md};
381
- border: 1px solid ${t(colors.gray[300], colors.darkGray[500])};
382
- background: ${t(colors.gray[200], colors.darkGray[600])};
383
- color: ${t(colors.gray[900], colors.gray[100])};
384
- font-size: ${fontSize.xs};
385
- cursor: pointer;
386
- user-select: none;
387
- transition:
388
- background 0.15s,
389
- border-color 0.15s;
390
- &:hover {
391
- background: ${t(colors.gray[300], colors.darkGray[500])};
392
- border-color: ${t(colors.gray[400], colors.darkGray[400])};
393
- }
394
- `,
395
- filterButtonActive: css`
396
- background: ${colors.pink[400]};
397
- color: ${colors.white};
398
- border-color: ${colors.pink[400]};
399
- &:hover {
400
- background: ${colors.pink[500]};
401
- border-color: ${colors.pink[500]};
402
- }
403
- `,
404
- actionsRow: css`
405
- display: flex;
406
- gap: ${size[1.5]};
407
- `,
408
- clearAllButton: css`
409
- flex: 1;
410
- font-size: ${fontSize.xs};
411
- `
412
- },
413
- // ConversationsList component styles
414
- conversationsList: {
415
- rowMain: css`
416
- display: flex;
417
- flex-direction: column;
418
- gap: 4px;
419
- flex: 1;
420
- min-width: 0;
421
- `,
422
- rowTop: css`
423
- display: flex;
424
- align-items: center;
425
- justify-content: space-between;
426
- gap: ${size[2]};
427
- `,
428
- rowRight: css`
429
- display: flex;
430
- align-items: center;
431
- gap: ${size[1]};
432
- flex-shrink: 0;
433
- `,
434
- rowContent: css`
435
- display: flex;
436
- align-items: center;
437
- gap: ${size[2]};
438
- flex: 1;
439
- `,
440
- rowInfo: css`
441
- display: flex;
442
- align-items: center;
443
- gap: ${size[1]};
444
- min-width: 0;
445
- flex: 1;
446
- `,
447
- typeDot: css`
448
- width: 8px;
449
- height: 8px;
450
- border-radius: 50%;
451
- `,
452
- label: css`
453
- font-weight: ${font.weight.semibold};
454
- `,
455
- toolCallsBadge: css`
456
- display: flex;
457
- align-items: center;
458
- gap: 3px;
459
- padding: 2px 6px;
460
- border-radius: ${border.radius.sm};
461
- background: oklch(0.35 0.1 280);
462
- color: oklch(0.8 0.12 280);
463
- font-size: ${fontSize.xs};
464
- font-weight: ${font.weight.semibold};
465
- `,
466
- statusDot: css`
467
- width: 6px;
468
- height: 6px;
469
- border-radius: 50%;
470
- margin-left: auto;
471
- `,
472
- stats: css`
473
- display: flex;
474
- align-items: center;
475
- gap: ${size[2]};
476
- font-size: 10px;
477
- opacity: 0.7;
478
- flex-wrap: wrap;
479
- `,
480
- statItem: css`
481
- display: flex;
482
- align-items: center;
483
- gap: 2px;
484
- white-space: nowrap;
485
- `,
486
- tokensBadge: css`
487
- display: flex;
488
- align-items: center;
489
- gap: 2px;
490
- padding: 1px 5px;
491
- border-radius: ${border.radius.sm};
492
- background: oklch(0.35 0.08 220);
493
- color: oklch(0.75 0.12 220);
494
- font-size: 10px;
495
- font-weight: ${font.weight.semibold};
496
- white-space: nowrap;
497
- `,
498
- loadingIndicator: css`
499
- font-size: 12px;
500
- color: oklch(0.7 0.17 142);
501
- animation: spin 1s linear infinite;
502
- @keyframes spin {
503
- from {
504
- transform: rotate(0deg);
505
- }
506
- to {
507
- transform: rotate(360deg);
508
- }
509
- }
510
- `
511
- },
512
- // ConversationDetails component styles
513
- conversationDetails: {
514
- emptyState: css`
515
- display: flex;
516
- align-items: center;
517
- justify-content: center;
518
- height: 100%;
519
- color: ${t(colors.gray[500], colors.gray[500])};
520
- font-size: ${fontSize.sm};
521
- `,
522
- container: css`
523
- display: flex;
524
- flex-direction: column;
525
- height: 100%;
526
- `,
527
- headerContent: css`
528
- display: flex;
529
- flex-direction: column;
530
- gap: ${size[1]};
531
- `,
532
- headerRow: css`
533
- display: flex;
534
- align-items: center;
535
- gap: ${size[3]};
536
- `,
537
- headerLabel: css`
538
- font-weight: ${font.weight.semibold};
539
- font-size: ${fontSize.sm};
540
- `,
541
- statusBadge: css`
542
- font-size: ${fontSize.xs};
543
- padding: 2px ${size[2]};
544
- border-radius: ${border.radius.sm};
545
- `,
546
- statusActive: css`
547
- background: ${colors.blue[500]}20;
548
- color: ${colors.blue[500]};
549
- `,
550
- statusCompleted: css`
551
- background: ${colors.green[500]}20;
552
- color: ${colors.green[500]};
553
- `,
554
- statusError: css`
555
- background: ${colors.red[500]}20;
556
- color: ${colors.red[500]};
557
- `,
558
- metaInfo: css`
559
- font-size: ${fontSize.xs};
560
- color: ${t(colors.gray[600], colors.gray[400])};
561
- `,
562
- usageInfo: css`
563
- font-size: ${fontSize.xs};
564
- color: ${t(colors.gray[600], colors.gray[400])};
565
- display: flex;
566
- align-items: center;
567
- gap: ${size[2]};
568
- `,
569
- usageLabel: css`
570
- font-weight: ${font.weight.semibold};
571
- color: ${colors.blue[500]};
572
- `,
573
- usageBold: css`
574
- font-weight: ${font.weight.semibold};
575
- `,
576
- toolsRow: css`
577
- display: flex;
578
- align-items: flex-start;
579
- gap: ${size[2]};
580
- margin-top: ${size[2]};
581
- `,
582
- toolsLabel: css`
583
- font-size: ${fontSize.sm};
584
- flex-shrink: 0;
585
- `,
586
- optionsRow: css`
587
- display: flex;
588
- align-items: flex-start;
589
- gap: ${size[2]};
590
- margin-top: ${size[1]};
591
- `,
592
- optionsLabel: css`
593
- font-size: ${fontSize.xs};
594
- color: ${t(colors.gray[600], colors.gray[400])};
595
- flex-shrink: 0;
596
- white-space: nowrap;
597
- `,
598
- optionsCompact: css`
599
- display: flex;
600
- flex-wrap: wrap;
601
- gap: 4px;
602
- `,
603
- optionBadge: css`
604
- display: inline-flex;
605
- align-items: center;
606
- padding: 1px 6px;
607
- background: ${t(colors.gray[200], colors.darkGray[700])};
608
- color: ${t(colors.gray[700], colors.gray[300])};
609
- border-radius: ${border.radius.sm};
610
- font-size: 10px;
611
- font-family: ${fontFamily.mono};
612
- max-width: 200px;
613
- overflow: hidden;
614
- text-overflow: ellipsis;
615
- white-space: nowrap;
616
- `,
617
- toggleButton: css`
618
- background: transparent;
619
- border: 1px solid ${t(colors.gray[300], colors.darkGray[600])};
620
- color: ${t(colors.gray[600], colors.gray[400])};
621
- padding: ${size[1]} ${size[2]};
622
- border-radius: ${border.radius.sm};
623
- font-size: ${fontSize.xs};
624
- cursor: pointer;
625
- transition: all 0.15s ease;
626
- margin-top: ${size[2]};
627
- &:hover {
628
- background: ${t(colors.gray[100], colors.darkGray[700])};
629
- color: ${t(colors.gray[700], colors.gray[300])};
630
- }
631
- `,
632
- extendedInfo: css`
633
- margin-top: ${size[3]};
634
- padding: ${size[3]};
635
- background: ${t(colors.gray[50], colors.darkGray[800])};
636
- border-radius: ${border.radius.md};
637
- border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
638
- `,
639
- infoSection: css`
640
- margin-bottom: ${size[3]};
641
- &:last-child {
642
- margin-bottom: 0;
643
- }
644
- `,
645
- infoLabel: css`
646
- font-weight: ${font.weight.semibold};
647
- font-size: ${fontSize.xs};
648
- color: ${t(colors.gray[700], colors.gray[300])};
649
- display: block;
650
- margin-bottom: ${size[1]};
651
- `,
652
- toolsList: css`
653
- display: flex;
654
- flex-wrap: wrap;
655
- gap: ${size[1]};
656
- `,
657
- toolBadge: css`
658
- display: inline-flex;
659
- align-items: center;
660
- padding: 2px ${size[2]};
661
- background: ${colors.purple[500]}20;
662
- color: ${colors.purple[400]};
663
- border-radius: ${border.radius.sm};
664
- font-size: ${fontSize.xs};
665
- font-family: ${fontFamily.mono};
666
- `,
667
- jsonPreview: css`
668
- margin: 0;
669
- padding: ${size[2]};
670
- background: ${t(colors.gray[100], colors.darkGray[900])};
671
- border-radius: ${border.radius.sm};
672
- font-size: ${fontSize.xs};
673
- font-family: ${fontFamily.mono};
674
- overflow-x: auto;
675
- max-height: 200px;
676
- overflow-y: auto;
677
- color: ${t(colors.gray[700], colors.gray[300])};
678
- white-space: pre-wrap;
679
- word-break: break-word;
680
- `,
681
- collapsibleSection: css`
682
- margin-top: ${size[2]};
683
- border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
684
- border-radius: ${border.radius.md};
685
- overflow: hidden;
686
- `,
687
- collapsibleSummary: css`
688
- cursor: pointer;
689
- padding: ${size[2]} ${size[3]};
690
- background: ${t(colors.gray[100], colors.darkGray[800])};
691
- font-size: ${fontSize.xs};
692
- font-weight: ${font.weight.medium};
693
- color: ${t(colors.gray[700], colors.gray[300])};
694
- user-select: none;
695
- &:hover {
696
- background: ${t(colors.gray[200], colors.darkGray[700])};
697
- }
698
- `,
699
- collapsibleContent: css`
700
- padding: ${size[3]};
701
- background: ${t(colors.gray[50], colors.darkGray[900])};
702
- font-size: ${fontSize.xs};
703
- max-height: 300px;
704
- overflow-y: auto;
705
- `,
706
- systemPromptItem: css`
707
- display: flex;
708
- gap: ${size[2]};
709
- padding: ${size[2]};
710
- margin-bottom: ${size[2]};
711
- background: ${t(colors.gray[100], colors.darkGray[800])};
712
- border-radius: ${border.radius.sm};
713
- &:last-child {
714
- margin-bottom: 0;
715
- }
716
- `,
717
- systemPromptIndex: css`
718
- font-weight: ${font.weight.semibold};
719
- color: ${colors.purple[400]};
720
- font-size: 10px;
721
- flex-shrink: 0;
722
- `,
723
- systemPromptText: css`
724
- color: ${t(colors.gray[700], colors.gray[300])};
725
- white-space: pre-wrap;
726
- word-break: break-word;
727
- line-height: 1.4;
728
- `,
729
- tabsContainer: css`
730
- display: flex;
731
- gap: ${size[2]};
732
- padding: ${size[3]};
733
- border-bottom: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
734
- `,
735
- tabButtonActive: css`
736
- background: ${colors.pink[400]};
737
- color: ${colors.white};
738
- border-color: ${colors.pink[400]};
739
- `,
740
- tabButtonPulse: css`
741
- position: relative;
742
- animation: activityPulse 1.4s ease-in-out infinite;
743
- @keyframes activityPulse {
744
- 0% {
745
- box-shadow: 0 0 0 0 ${colors.pink[400]}55;
746
- }
747
- 70% {
748
- box-shadow: 0 0 0 8px ${colors.pink[400]}00;
749
- }
750
- 100% {
751
- box-shadow: 0 0 0 0 ${colors.pink[400]}00;
752
- }
753
- }
754
- `,
755
- contentArea: css`
756
- flex: 1;
757
- overflow: auto;
758
- padding: ${size[3]};
759
- padding-bottom: ${size[6]};
760
- `,
761
- emptyMessages: css`
762
- padding: ${size[6]};
763
- color: ${t(colors.gray[500], colors.gray[500])};
764
- font-size: ${fontSize.sm};
765
- text-align: center;
766
- `,
767
- messagesList: css`
768
- display: flex;
769
- flex-direction: column;
770
- gap: ${size[3]};
771
- `,
772
- messageCard: css`
773
- border-radius: ${border.radius.lg};
774
- overflow: hidden;
775
- `,
776
- messageCardUser: css`
777
- padding: ${size[3]};
778
- border: 1.5px solid oklch(0.45 0.12 260);
779
- `,
780
- messageCardAssistant: css`
781
- padding: ${size[4]};
782
- border: 1.5px solid oklch(0.45 0.12 142);
783
- `,
784
- messageCardClient: css`
785
- border: 2px solid oklch(0.45 0.15 142);
786
- `,
787
- messageCardServer: css`
788
- border: 2px solid oklch(0.45 0.12 45);
789
- `,
790
- messageHeader: css`
791
- display: flex;
792
- align-items: center;
793
- gap: 10px;
794
- margin-bottom: ${size[3]};
795
- `,
796
- avatarUser: css`
797
- width: 28px;
798
- height: 28px;
799
- border-radius: 50%;
800
- background: oklch(0.5 0.2 260);
801
- display: flex;
802
- align-items: center;
803
- justify-content: center;
804
- font-weight: ${font.weight.bold};
805
- font-size: ${fontSize.sm};
806
- color: ${colors.white};
807
- flex-shrink: 0;
808
- `,
809
- avatarAssistant: css`
810
- width: 28px;
811
- height: 28px;
812
- border-radius: 50%;
813
- background: oklch(0.5 0.2 142);
814
- display: flex;
815
- align-items: center;
816
- justify-content: center;
817
- font-weight: ${font.weight.bold};
818
- font-size: ${fontSize.sm};
819
- color: ${colors.white};
820
- flex-shrink: 0;
821
- `,
822
- avatarClient: css`
823
- width: 28px;
824
- height: 28px;
825
- border-radius: 50%;
826
- background: oklch(0.5 0.22 142);
827
- display: flex;
828
- align-items: center;
829
- justify-content: center;
830
- font-weight: ${font.weight.bold};
831
- font-size: ${fontSize.sm};
832
- color: ${colors.white};
833
- flex-shrink: 0;
834
- `,
835
- avatarServer: css`
836
- width: 28px;
837
- height: 28px;
838
- border-radius: 50%;
839
- background: oklch(0.55 0.18 45);
840
- display: flex;
841
- align-items: center;
842
- justify-content: center;
843
- font-weight: ${font.weight.bold};
844
- font-size: ${fontSize.sm};
845
- color: ${colors.white};
846
- flex-shrink: 0;
847
- `,
848
- roleLabel: css`
849
- flex: 1;
850
- `,
851
- roleLabelUser: css`
852
- font-weight: ${font.weight.semibold};
853
- font-size: ${fontSize.sm};
854
- color: oklch(0.7 0.15 260);
855
- text-transform: capitalize;
856
- `,
857
- roleLabelAssistant: css`
858
- font-weight: ${font.weight.semibold};
859
- font-size: ${fontSize.sm};
860
- color: oklch(0.7 0.15 142);
861
- text-transform: capitalize;
862
- `,
863
- roleLabelClient: css`
864
- font-weight: ${font.weight.semibold};
865
- font-size: ${fontSize.sm};
866
- color: oklch(0.75 0.18 142);
867
- text-transform: capitalize;
868
- `,
869
- roleLabelServer: css`
870
- font-weight: ${font.weight.semibold};
871
- font-size: ${fontSize.sm};
872
- color: oklch(0.75 0.15 45);
873
- text-transform: capitalize;
874
- `,
875
- sourceBanner: css`
876
- display: flex;
877
- align-items: center;
878
- gap: 8px;
879
- padding: 6px 12px;
880
- font-size: 10px;
881
- font-weight: ${font.weight.medium};
882
- text-transform: uppercase;
883
- letter-spacing: 0.5px;
884
- `,
885
- sourceBannerClient: css`
886
- background: oklch(0.25 0.04 142);
887
- color: oklch(0.7 0.08 142);
888
- `,
889
- sourceBannerServer: css`
890
- background: oklch(0.25 0.04 45);
891
- color: oklch(0.7 0.06 45);
892
- `,
893
- sourceBannerIcon: css`
894
- font-size: 14px;
895
- `,
896
- sourceBannerText: css`
897
- flex: 1;
898
- `,
899
- messageCardContent: css`
900
- padding: ${size[4]};
901
- padding-top: ${size[3]};
902
- `,
903
- sourceBadge: css`
904
- font-size: 10px;
905
- padding: 2px 6px;
906
- border-radius: 4px;
907
- font-family: ${fontFamily.mono};
908
- font-weight: ${font.weight.medium};
909
- `,
910
- sourceBadgeClient: css`
911
- background: oklch(0.25 0.08 260);
912
- color: oklch(0.75 0.12 260);
913
- `,
914
- sourceBadgeServer: css`
915
- background: oklch(0.25 0.08 45);
916
- color: oklch(0.75 0.12 45);
917
- `,
918
- timestamp: css`
919
- font-size: 10px;
920
- color: oklch(0.6 0.05 260);
921
- font-family: ${fontFamily.mono};
922
- `,
923
- messageUsage: css`
924
- display: flex;
925
- align-items: center;
926
- gap: 4px;
927
- font-size: 10px;
928
- font-family: ${fontFamily.mono};
929
- color: oklch(0.65 0.12 142);
930
- margin-left: auto;
931
- padding: 2px 6px;
932
- background: oklch(0.2 0.03 142);
933
- border-radius: 4px;
934
- `,
935
- messageUsageIcon: css`
936
- font-size: 10px;
937
- `,
938
- thinkingDetails: css`
939
- margin-bottom: ${size[2]};
940
- border: 1px solid oklch(0.35 0.1 280);
941
- border-radius: 6px;
942
- background: oklch(0.18 0.02 280);
943
- overflow: hidden;
944
- `,
945
- thinkingSummary: css`
946
- padding: ${size[2]};
947
- cursor: pointer;
948
- font-size: ${fontSize.sm};
949
- color: oklch(0.75 0.1 280);
950
- font-weight: ${font.weight.semibold};
951
- &:hover {
952
- background: oklch(0.22 0.03 280);
953
- }
954
- `,
955
- thinkingContent: css`
956
- padding: ${size[2]};
957
- font-size: ${fontSize.xs};
958
- line-height: 1.5;
959
- white-space: pre-wrap;
960
- word-break: break-word;
961
- color: oklch(0.7 0.05 280);
962
- font-family: ${fontFamily.mono};
963
- border-top: 1px solid oklch(0.3 0.05 280);
964
- max-height: 300px;
965
- overflow-y: auto;
966
- `,
967
- messageContent: css`
968
- font-size: ${fontSize.sm};
969
- line-height: 1.6;
970
- white-space: pre-wrap;
971
- word-break: break-word;
972
- color: oklch(0.85 0.02 260);
973
- font-family:
974
- system-ui,
975
- -apple-system,
976
- sans-serif;
977
- `,
978
- toolCallsContainer: css`
979
- margin-top: ${size[3]};
980
- display: flex;
981
- flex-direction: column;
982
- gap: 8px;
983
- `,
984
- toolCall: css`
985
- border-radius: 8px;
986
- font-size: ${fontSize.xs};
987
- overflow: hidden;
988
- `,
989
- toolCallNormal: css`
990
- background: oklch(0.22 0.02 260);
991
- border: 1px solid oklch(0.3 0.05 280);
992
- `,
993
- toolCallApproval: css`
994
- background: oklch(0.22 0.08 60);
995
- border: 1px solid oklch(0.4 0.12 60);
996
- `,
997
- toolCallHeader: css`
998
- display: flex;
999
- align-items: center;
1000
- gap: 6px;
1001
- padding: 10px 12px;
1002
- cursor: pointer;
1003
- list-style: none;
1004
- &::-webkit-details-marker {
1005
- display: none;
1006
- }
1007
- &::before {
1008
- content: '▶';
1009
- font-size: 10px;
1010
- color: oklch(0.6 0.1 280);
1011
- transition: transform 0.2s ease;
1012
- }
1013
- details[open] > &::before {
1014
- transform: rotate(90deg);
1015
- }
1016
- &:hover {
1017
- background: oklch(0.25 0.04 280);
1018
- }
1019
- `,
1020
- toolCallContent: css`
1021
- padding: ${size[2]} ${size[3]} ${size[3]};
1022
- border-top: 1px solid oklch(0.3 0.05 280);
1023
- `,
1024
- toolCallName: css`
1025
- font-weight: ${font.weight.semibold};
1026
- `,
1027
- toolCallNameNormal: css`
1028
- color: oklch(0.75 0.15 280);
1029
- `,
1030
- toolCallNameApproval: css`
1031
- color: oklch(0.75 0.15 60);
1032
- `,
1033
- toolStateBadge: css`
1034
- font-size: 10px;
1035
- padding: 2px 6px;
1036
- border-radius: 3px;
1037
- `,
1038
- toolStateBadgeNormal: css`
1039
- background: oklch(0.35 0.1 280);
1040
- color: oklch(0.8 0.1 280);
1041
- `,
1042
- toolStateBadgeApproval: css`
1043
- background: oklch(0.35 0.12 60);
1044
- color: oklch(0.85 0.1 60);
1045
- `,
1046
- approvalRequiredBadge: css`
1047
- font-size: 10px;
1048
- padding: 2px 6px;
1049
- border-radius: 3px;
1050
- background: oklch(0.45 0.15 30);
1051
- color: oklch(0.95 0.05 60);
1052
- font-weight: ${font.weight.semibold};
1053
- `,
1054
- toolArguments: css`
1055
- font-family: ${fontFamily.mono};
1056
- font-size: ${fontSize.xs};
1057
- color: oklch(0.7 0.05 260);
1058
- white-space: pre-wrap;
1059
- word-break: break-all;
1060
- `,
1061
- toolSection: css`
1062
- margin-top: ${size[2]};
1063
- border-top: 1px solid oklch(0.28 0.03 260);
1064
- padding-top: ${size[2]};
1065
- `,
1066
- toolSectionLabel: css`
1067
- font-size: 10px;
1068
- font-weight: ${font.weight.semibold};
1069
- color: oklch(0.6 0.08 260);
1070
- text-transform: uppercase;
1071
- letter-spacing: 0.05em;
1072
- margin-bottom: ${size[1]};
1073
- `,
1074
- toolJsonContainer: css`
1075
- font-family: ${fontFamily.mono};
1076
- font-size: ${fontSize.xs};
1077
- color: oklch(0.8 0.05 260);
1078
- background: oklch(0.18 0.02 260);
1079
- border-radius: 4px;
1080
- padding: ${size[4]};
1081
- padding-left: ${size[8]};
1082
- `,
1083
- chunksDetails: css`
1084
- margin-top: ${size[3]};
1085
- `,
1086
- chunksSummary: css`
1087
- cursor: pointer;
1088
- font-size: ${fontSize.xs};
1089
- font-weight: ${font.weight.semibold};
1090
- color: oklch(0.65 0.08 260);
1091
- padding: ${size[2]};
1092
- background: oklch(0.2 0.02 260);
1093
- border-radius: 6px;
1094
- border: 1px solid oklch(0.28 0.03 260);
1095
- user-select: none;
1096
- list-style: none;
1097
- &::-webkit-details-marker {
1098
- display: none;
1099
- }
1100
- &::marker {
1101
- display: none;
1102
- }
1103
- details[open] > & .chunks-arrow {
1104
- transform: rotate(90deg);
1105
- }
1106
- `,
1107
- chunksSummaryRow: css`
1108
- display: flex;
1109
- align-items: center;
1110
- gap: ${size[1]};
1111
- `,
1112
- chunksSummaryArrow: css`
1113
- font-size: 8px;
1114
- transition: transform 0.15s ease;
1115
- color: oklch(0.5 0.05 260);
1116
- details[open] > summary > div > & {
1117
- transform: rotate(90deg);
1118
- }
1119
- `,
1120
- chunksSummaryTitle: css`
1121
- margin-right: ${size[1]};
1122
- `,
1123
- chunksSummaryContent: css`
1124
- display: flex;
1125
- flex-direction: column;
1126
- gap: 6px;
1127
- `,
1128
- chunksSummaryHeader: css`
1129
- display: flex;
1130
- align-items: center;
1131
- gap: ${size[2]};
1132
- `,
1133
- chunkBadge: css`
1134
- padding: 2px 6px;
1135
- border-radius: 3px;
1136
- font-size: 9px;
1137
- `,
1138
- chunkBadgeTool: css`
1139
- background: oklch(0.3 0.1 280);
1140
- color: oklch(0.75 0.12 280);
1141
- `,
1142
- chunkBadgeError: css`
1143
- background: oklch(0.3 0.15 25);
1144
- color: oklch(0.75 0.2 25);
1145
- `,
1146
- chunkBadgeSuccess: css`
1147
- background: oklch(0.3 0.1 142);
1148
- color: oklch(0.75 0.15 142);
1149
- `,
1150
- chunkBadgeApproval: css`
1151
- background: oklch(0.3 0.15 50);
1152
- color: oklch(0.75 0.2 50);
1153
- `,
1154
- chunkBadgeCount: css`
1155
- background: oklch(0.3 0.08 260);
1156
- color: oklch(0.75 0.1 260);
1157
- font-weight: ${font.weight.semibold};
1158
- `,
1159
- contentPreview: css`
1160
- font-family: ${fontFamily.mono};
1161
- font-size: 10px;
1162
- color: oklch(0.75 0.05 260);
1163
- white-space: pre-wrap;
1164
- word-break: break-word;
1165
- max-width: 100%;
1166
- font-weight: ${font.weight.normal};
1167
- margin-top: 2px;
1168
- `,
1169
- chunksContainer: css`
1170
- margin-top: ${size[2]};
1171
- padding: ${size[2]};
1172
- background: oklch(0.18 0.02 260);
1173
- border-radius: 6px;
1174
- border: 1px solid oklch(0.25 0.03 260);
1175
- `,
1176
- chunksList: css`
1177
- display: flex;
1178
- flex-direction: column;
1179
- gap: ${size[1]};
1180
- `,
1181
- chunkItem: css`
1182
- padding: 6px ${size[2]};
1183
- border-radius: ${border.radius.sm};
1184
- background: oklch(0.22 0.02 260);
1185
- border: 1px solid oklch(0.28 0.03 260);
1186
- font-size: 10px;
1187
- `,
1188
- chunkItemLarge: css`
1189
- padding: ${size[2]} 10px;
1190
- border-radius: 6px;
1191
- background: oklch(0.22 0.02 260);
1192
- border: 1px solid oklch(0.28 0.03 260);
1193
- font-size: ${fontSize.xs};
1194
- `,
1195
- chunkHeader: css`
1196
- display: flex;
1197
- align-items: center;
1198
- gap: 6px;
1199
- margin-bottom: ${size[1]};
1200
- `,
1201
- chunkHeaderLarge: css`
1202
- display: flex;
1203
- align-items: center;
1204
- gap: ${size[2]};
1205
- margin-bottom: 6px;
1206
- `,
1207
- chunkNumber: css`
1208
- font-size: 9px;
1209
- font-weight: ${font.weight.semibold};
1210
- color: oklch(0.6 0.05 260);
1211
- min-width: 24px;
1212
- `,
1213
- chunkNumberLarge: css`
1214
- font-size: 10px;
1215
- font-weight: ${font.weight.semibold};
1216
- color: oklch(0.6 0.05 260);
1217
- min-width: 32px;
1218
- `,
1219
- chunkTypeBadge: css`
1220
- display: flex;
1221
- align-items: center;
1222
- gap: 3px;
1223
- `,
1224
- chunkTypeBadgeLarge: css`
1225
- display: flex;
1226
- align-items: center;
1227
- gap: ${size[1]};
1228
- `,
1229
- chunkTypeDot: css`
1230
- width: 5px;
1231
- height: 5px;
1232
- border-radius: 50%;
1233
- `,
1234
- chunkTypeDotLarge: css`
1235
- width: 6px;
1236
- height: 6px;
1237
- border-radius: 50%;
1238
- `,
1239
- chunkTypeLabel: css`
1240
- font-weight: ${font.weight.semibold};
1241
- color: oklch(0.7 0.08 260);
1242
- `,
1243
- chunkTypeLabelLarge: css`
1244
- font-weight: ${font.weight.semibold};
1245
- color: oklch(0.75 0.08 260);
1246
- `,
1247
- chunkToolBadge: css`
1248
- padding: 1px ${size[1]};
1249
- border-radius: 3px;
1250
- background: oklch(0.3 0.1 280);
1251
- color: oklch(0.75 0.12 280);
1252
- font-size: 9px;
1253
- font-weight: ${font.weight.semibold};
1254
- `,
1255
- chunkToolBadgeLarge: css`
1256
- padding: 2px 6px;
1257
- border-radius: 3px;
1258
- background: oklch(0.3 0.1 280);
1259
- color: oklch(0.75 0.12 280);
1260
- font-size: 10px;
1261
- font-weight: ${font.weight.semibold};
1262
- `,
1263
- chunkTimestamp: css`
1264
- margin-left: auto;
1265
- color: ${t(colors.gray[500], colors.gray[500])};
1266
- font-size: 9px;
1267
- `,
1268
- chunkTimestampLarge: css`
1269
- margin-left: auto;
1270
- color: ${t(colors.gray[500], colors.gray[500])};
1271
- font-size: 10px;
1272
- `,
1273
- rawJsonButton: css`
1274
- padding: 1px ${size[1]};
1275
- border-radius: 2px;
1276
- border: 1px solid oklch(0.32 0.05 260);
1277
- color: oklch(0.7 0.08 260);
1278
- font-size: 8px;
1279
- cursor: pointer;
1280
- font-family: ${fontFamily.mono};
1281
- font-weight: ${font.weight.semibold};
1282
- `,
1283
- rawJsonButtonInactive: css`
1284
- background: oklch(0.28 0.03 260);
1285
- `,
1286
- rawJsonButtonActive: css`
1287
- background: oklch(0.35 0.1 260);
1288
- `,
1289
- rawJsonButtonLarge: css`
1290
- padding: 2px 6px;
1291
- border-radius: 3px;
1292
- border: 1px solid oklch(0.32 0.05 260);
1293
- color: oklch(0.7 0.08 260);
1294
- font-size: 10px;
1295
- cursor: pointer;
1296
- font-family: ${fontFamily.mono};
1297
- font-weight: ${font.weight.semibold};
1298
- `,
1299
- chunkContent: css`
1300
- font-family: ${fontFamily.mono};
1301
- white-space: pre-wrap;
1302
- word-break: break-word;
1303
- padding: ${size[1]} 6px;
1304
- background: oklch(0.2 0.01 260);
1305
- border-radius: 3px;
1306
- color: oklch(0.8 0.05 260);
1307
- font-size: 10px;
1308
- `,
1309
- chunkContentLarge: css`
1310
- font-family: ${fontFamily.mono};
1311
- white-space: pre-wrap;
1312
- word-break: break-word;
1313
- padding: 6px ${size[2]};
1314
- background: oklch(0.2 0.01 260);
1315
- border-radius: ${border.radius.sm};
1316
- color: oklch(0.8 0.05 260);
1317
- font-size: ${fontSize.xs};
1318
- `,
1319
- chunkError: css`
1320
- color: oklch(0.65 0.2 25);
1321
- font-family: ${fontFamily.mono};
1322
- padding: ${size[1]} 6px;
1323
- background: oklch(0.2 0.05 25);
1324
- border-radius: 3px;
1325
- `,
1326
- chunkErrorLarge: css`
1327
- color: oklch(0.65 0.2 25);
1328
- font-family: ${fontFamily.mono};
1329
- padding: 6px ${size[2]};
1330
- background: oklch(0.2 0.05 25);
1331
- border-radius: ${border.radius.sm};
1332
- `,
1333
- chunkFinish: css`
1334
- color: oklch(0.7 0.12 142);
1335
- padding: ${size[1]} 6px;
1336
- background: oklch(0.2 0.03 142);
1337
- border-radius: 3px;
1338
- font-weight: ${font.weight.semibold};
1339
- `,
1340
- chunkFinishLarge: css`
1341
- color: oklch(0.7 0.12 142);
1342
- padding: 6px ${size[2]};
1343
- background: oklch(0.2 0.03 142);
1344
- border-radius: ${border.radius.sm};
1345
- font-weight: ${font.weight.semibold};
1346
- `,
1347
- chunkApproval: css`
1348
- padding: 6px ${size[2]};
1349
- background: oklch(0.25 0.12 50);
1350
- border-radius: ${border.radius.sm};
1351
- border: 1px solid oklch(0.35 0.15 50);
1352
- `,
1353
- chunkApprovalLarge: css`
1354
- padding: ${size[2]};
1355
- background: oklch(0.25 0.12 50);
1356
- border-radius: 6px;
1357
- border: 1px solid oklch(0.35 0.15 50);
1358
- `,
1359
- chunkApprovalTitle: css`
1360
- color: oklch(0.75 0.15 50);
1361
- font-weight: ${font.weight.semibold};
1362
- margin-bottom: ${size[1]};
1363
- font-size: 10px;
1364
- `,
1365
- chunkApprovalTitleLarge: css`
1366
- color: oklch(0.75 0.15 50);
1367
- font-weight: ${font.weight.semibold};
1368
- margin-bottom: 6px;
1369
- font-size: ${fontSize.xs};
1370
- `,
1371
- chunkApprovalInput: css`
1372
- font-family: ${fontFamily.mono};
1373
- font-size: 9px;
1374
- color: oklch(0.7 0.08 50);
1375
- white-space: pre-wrap;
1376
- word-break: break-word;
1377
- `,
1378
- chunkApprovalInputLarge: css`
1379
- font-family: ${fontFamily.mono};
1380
- font-size: 10px;
1381
- color: oklch(0.7 0.08 50);
1382
- white-space: pre-wrap;
1383
- word-break: break-word;
1384
- `,
1385
- chunkToolCall: css`
1386
- padding: ${size[2]} ${size[3]};
1387
- background: oklch(0.22 0.08 280);
1388
- border-radius: ${border.radius.sm};
1389
- border: 1px solid oklch(0.32 0.1 280);
1390
- margin-top: ${size[1]};
1391
- `,
1392
- chunkToolCallHeader: css`
1393
- display: flex;
1394
- align-items: center;
1395
- justify-content: space-between;
1396
- margin-bottom: ${size[2]};
1397
- `,
1398
- chunkToolCallTitle: css`
1399
- color: oklch(0.75 0.12 280);
1400
- font-weight: ${font.weight.semibold};
1401
- font-size: 10px;
1402
- `,
1403
- chunkToolResult: css`
1404
- padding: ${size[2]} ${size[3]};
1405
- background: oklch(0.22 0.08 160);
1406
- border-radius: ${border.radius.sm};
1407
- border: 1px solid oklch(0.32 0.1 160);
1408
- margin-top: ${size[1]};
1409
- `,
1410
- chunkToolResultHeader: css`
1411
- display: flex;
1412
- align-items: center;
1413
- justify-content: space-between;
1414
- margin-bottom: ${size[2]};
1415
- `,
1416
- chunkToolResultTitle: css`
1417
- color: oklch(0.75 0.12 160);
1418
- font-weight: ${font.weight.semibold};
1419
- font-size: 10px;
1420
- `,
1421
- rawJson: css`
1422
- font-family: ${fontFamily.mono};
1423
- white-space: pre-wrap;
1424
- word-break: break-word;
1425
- padding: 6px;
1426
- background: oklch(0.16 0.01 260);
1427
- border-radius: 3px;
1428
- color: oklch(0.75 0.08 260);
1429
- font-size: 9px;
1430
- max-height: 200px;
1431
- overflow-y: auto;
1432
- `,
1433
- rawJsonLarge: css`
1434
- font-family: ${fontFamily.mono};
1435
- white-space: pre-wrap;
1436
- word-break: break-word;
1437
- padding: ${size[2]};
1438
- background: oklch(0.16 0.01 260);
1439
- border-radius: ${border.radius.sm};
1440
- color: oklch(0.75 0.08 260);
1441
- font-size: 10px;
1442
- max-height: 300px;
1443
- overflow-y: auto;
1444
- `,
1445
- noChunks: css`
1446
- padding: ${size[3]};
1447
- color: ${t(colors.gray[500], colors.gray[500])};
1448
- font-size: ${fontSize.xs};
1449
- `,
1450
- streamContainer: css`
1451
- padding: ${size[3]};
1452
- background: oklch(0.18 0.02 260);
1453
- border-radius: ${border.radius.lg};
1454
- border: 1px solid oklch(0.25 0.03 260);
1455
- `,
1456
- streamHeader: css`
1457
- margin-bottom: ${size[3]};
1458
- padding-bottom: ${size[2]};
1459
- border-bottom: 1px solid oklch(0.25 0.03 260);
1460
- `,
1461
- streamHeaderRow: css`
1462
- display: flex;
1463
- align-items: center;
1464
- gap: ${size[2]};
1465
- margin-bottom: ${size[1]};
1466
- `,
1467
- streamTitle: css`
1468
- font-weight: ${font.weight.semibold};
1469
- font-size: ${fontSize.sm};
1470
- color: oklch(0.8 0.05 260);
1471
- `,
1472
- streamSubtitle: css`
1473
- font-size: ${fontSize.xs};
1474
- color: ${t(colors.gray[500], colors.gray[500])};
1475
- `,
1476
- messageGroups: css`
1477
- display: flex;
1478
- flex-direction: column;
1479
- gap: ${size[2]};
1480
- `,
1481
- messageGroupDetails: css`
1482
- margin-bottom: ${size[1]};
1483
- `,
1484
- messageGroupSummary: css`
1485
- cursor: pointer;
1486
- font-size: ${fontSize.xs};
1487
- font-weight: ${font.weight.semibold};
1488
- color: oklch(0.65 0.08 260);
1489
- padding: 10px;
1490
- background: oklch(0.2 0.02 260);
1491
- border-radius: 6px;
1492
- border: 1px solid oklch(0.28 0.03 260);
1493
- user-select: none;
1494
- `,
1495
- messageGroupContent: css`
1496
- display: flex;
1497
- flex-direction: column;
1498
- gap: 6px;
1499
- `,
1500
- messageGroupHeader: css`
1501
- display: flex;
1502
- align-items: center;
1503
- gap: ${size[2]};
1504
- `,
1505
- messageId: css`
1506
- font-family: ${fontFamily.mono};
1507
- font-size: 9px;
1508
- color: oklch(0.6 0.05 260);
1509
- font-weight: ${font.weight.normal};
1510
- `,
1511
- // Embedding and Summarize operation styles
1512
- operationCard: css`
1513
- padding: ${size[4]};
1514
- border-radius: ${border.radius.lg};
1515
- background: linear-gradient(
1516
- 135deg,
1517
- oklch(0.25 0.04 200) 0%,
1518
- oklch(0.22 0.03 200) 100%
1519
- );
1520
- border: 1.5px solid oklch(0.5 0.15 200);
1521
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
1522
- `,
1523
- operationHeader: css`
1524
- display: flex;
1525
- align-items: center;
1526
- gap: ${size[2]};
1527
- margin-bottom: ${size[3]};
1528
- `,
1529
- operationIcon: css`
1530
- font-size: ${fontSize.lg};
1531
- `,
1532
- operationTitle: css`
1533
- font-weight: ${font.weight.semibold};
1534
- font-size: ${fontSize.sm};
1535
- color: oklch(0.85 0.1 200);
1536
- flex: 1;
1537
- `,
1538
- operationStatus: css`
1539
- font-size: ${fontSize.xs};
1540
- padding: 2px ${size[2]};
1541
- border-radius: ${border.radius.sm};
1542
- `,
1543
- operationStatusCompleted: css`
1544
- background: ${colors.green[500]}20;
1545
- color: ${colors.green[400]};
1546
- `,
1547
- operationStatusPending: css`
1548
- background: ${colors.yellow[500]}20;
1549
- color: ${colors.yellow[400]};
1550
- `,
1551
- durationBadge: css`
1552
- font-size: ${fontSize.xs};
1553
- padding: 2px ${size[2]};
1554
- border-radius: ${border.radius.sm};
1555
- background: oklch(0.3 0.1 280);
1556
- color: oklch(0.8 0.1 280);
1557
- font-family: ${fontFamily.mono};
1558
- `,
1559
- operationDetails: css`
1560
- display: flex;
1561
- flex-direction: column;
1562
- gap: ${size[2]};
1563
- `,
1564
- operationDetail: css`
1565
- display: flex;
1566
- align-items: center;
1567
- gap: ${size[2]};
1568
- font-size: ${fontSize.xs};
1569
- `,
1570
- operationLabel: css`
1571
- color: oklch(0.65 0.08 200);
1572
- font-weight: ${font.weight.semibold};
1573
- min-width: 70px;
1574
- `,
1575
- operationValue: css`
1576
- color: oklch(0.8 0.05 200);
1577
- font-family: ${fontFamily.mono};
1578
- `,
1579
- // Iteration badge
1580
- iterationBadge: css`
1581
- font-size: ${fontSize.xs};
1582
- padding: 2px ${size[2]};
1583
- border-radius: ${border.radius.sm};
1584
- background: ${colors.purple[500]}20;
1585
- color: ${colors.purple[400]};
1586
- font-weight: ${font.weight.semibold};
1587
- `
1588
- }
1589
- };
1590
- };
1591
- function useStyles() {
1592
- const { theme } = useTheme();
1593
- const [styles, setStyles] = createSignal(stylesFactory(theme()));
1594
- createEffect(() => {
1595
- setStyles(stylesFactory(theme()));
1596
- });
1597
- return styles;
1598
- }
1599
- export {
1600
- useStyles
1601
- };
1602
- //# sourceMappingURL=use-styles.js.map