anentrypoint-design 0.0.209 → 0.0.211
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/app-shell.css +120 -61
- package/chat.css +41 -18
- package/colors_and_type.css +19 -4
- package/dist/247420.css +405 -83
- package/dist/247420.js +13 -13
- package/package.json +1 -1
- package/src/components/content.js +6 -0
- package/src/components/files.js +3 -3
- package/src/components/sessions.js +2 -2
- package/src/components/shell.js +60 -4
package/chat.css
CHANGED
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
overflow-y: auto;
|
|
126
126
|
display: flex;
|
|
127
127
|
flex-direction: column;
|
|
128
|
-
gap: var(--space-2, 8px);
|
|
128
|
+
gap: calc(var(--space-2, 8px) * var(--density, 1));
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
/* Jump-to-latest: hidden until the thread scroll listener adds .show. */
|
|
@@ -177,14 +177,14 @@
|
|
|
177
177
|
}
|
|
178
178
|
.agentchat-empty-title { margin: 0; font-size: 1.05em; color: var(--fg-2, var(--fg)); }
|
|
179
179
|
.agentchat-empty-sub { margin: 0; font-size: var(--fs-sm); }
|
|
180
|
-
.agentchat-empty-suggestions {
|
|
180
|
+
.agentchat-empty-suggestions, .chat-empty-suggestions {
|
|
181
181
|
display: flex;
|
|
182
182
|
flex-wrap: wrap;
|
|
183
183
|
gap: .5em;
|
|
184
184
|
justify-content: center;
|
|
185
185
|
margin-top: .5em;
|
|
186
186
|
}
|
|
187
|
-
.agentchat-empty-suggestion {
|
|
187
|
+
.agentchat-empty-suggestion, .chat-empty-suggestion {
|
|
188
188
|
cursor: pointer;
|
|
189
189
|
font: inherit;
|
|
190
190
|
font-size: var(--fs-tiny);
|
|
@@ -194,8 +194,8 @@
|
|
|
194
194
|
background: color-mix(in srgb, var(--fg) 5%, transparent);
|
|
195
195
|
color: var(--fg-2, var(--fg));
|
|
196
196
|
}
|
|
197
|
-
.agentchat-empty-suggestion:hover { background: color-mix(in srgb, var(--accent, var(--fg)) 12%, transparent); }
|
|
198
|
-
.agentchat-empty-suggestion:focus-visible { outline: 2px solid var(--accent, var(--fg)); outline-offset: 2px; }
|
|
197
|
+
.agentchat-empty-suggestion:hover, .chat-empty-suggestion:hover { background: color-mix(in srgb, var(--accent, var(--fg)) 12%, transparent); }
|
|
198
|
+
.agentchat-empty-suggestion:focus-visible, .chat-empty-suggestion:focus-visible { outline: 2px solid var(--accent, var(--fg)); outline-offset: 2px; }
|
|
199
199
|
|
|
200
200
|
/* Guided install path in the empty state: copy line + monospaced command rows
|
|
201
201
|
(each with its own copy button) + a recheck button. No animation. */
|
|
@@ -297,8 +297,8 @@
|
|
|
297
297
|
}
|
|
298
298
|
.status-dot-disc.status-dot-live { background: var(--accent); animation: status-disc-pulse 1.8s ease-in-out infinite; }
|
|
299
299
|
.status-dot-disc.status-dot-error { background: var(--flame); }
|
|
300
|
-
.status-dot-disc.status-dot-connecting { background: var(--amber
|
|
301
|
-
.status-dot-disc.status-dot-stale { background: var(--amber
|
|
300
|
+
.status-dot-disc.status-dot-connecting { background: var(--amber); }
|
|
301
|
+
.status-dot-disc.status-dot-stale { background: var(--amber); }
|
|
302
302
|
@keyframes status-disc-pulse {
|
|
303
303
|
0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 55%, transparent); }
|
|
304
304
|
50% { box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent) 0%, transparent); }
|
|
@@ -360,7 +360,7 @@
|
|
|
360
360
|
/* Rail tones MUST match .row.rail-* in app-shell.css so the same semantic state
|
|
361
361
|
reads as one colour across the conversation list and content rows. */
|
|
362
362
|
.ds-session-row.rail-green::before { background: var(--accent); }
|
|
363
|
-
.ds-session-row.rail-purple::before { background: var(--purple-2
|
|
363
|
+
.ds-session-row.rail-purple::before { background: var(--purple-2); }
|
|
364
364
|
.ds-session-row.rail-flame::before { background: var(--flame); }
|
|
365
365
|
.ds-session-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
366
366
|
.ds-session-title { font-size: var(--fs-sm); color: var(--fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
@@ -391,7 +391,8 @@
|
|
|
391
391
|
background: color-mix(in oklab, var(--warn) 12%, transparent); color: var(--warn);
|
|
392
392
|
}
|
|
393
393
|
.ds-dash-header .btn-primary.danger.is-armed { background: var(--warn); color: var(--paper); border-color: var(--warn); }
|
|
394
|
-
.ds-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(
|
|
394
|
+
.ds-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--space-2); padding: var(--space-3); }
|
|
395
|
+
@media (min-width: 1500px) { .ds-dash-grid { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); } }
|
|
395
396
|
.ds-dash-card { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-2); }
|
|
396
397
|
.ds-dash-card.is-error { border-color: var(--flame); }
|
|
397
398
|
.ds-dash-card-head { display: flex; align-items: center; gap: var(--space-2); }
|
|
@@ -461,11 +462,16 @@ button.chat-composer-context { cursor: pointer; }
|
|
|
461
462
|
button.chat-composer-context:hover { color: var(--fg-2); }
|
|
462
463
|
button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
463
464
|
|
|
465
|
+
/* Composer send/cancel button row: a non-wrapping cluster pinned to the
|
|
466
|
+
bottom-right of the flex-end composer (was unstyled, so the send button
|
|
467
|
+
could wrap below the textarea instead of anchoring like claude.ai/code). */
|
|
468
|
+
.chat-composer-toolbar { display: flex; align-items: center; gap: var(--space-1); flex: 0 0 auto; margin-left: auto; align-self: flex-end; }
|
|
469
|
+
|
|
464
470
|
/* --- B2: follow-up chips below the last settled assistant turn. --- */
|
|
465
471
|
.agentchat-followups { display: flex; flex-wrap: wrap; gap: var(--space-2); padding: var(--space-2) var(--space-3); }
|
|
466
472
|
|
|
467
473
|
/* --- C1: stale/idle dashboard status (static, NOT pulsing). --- */
|
|
468
|
-
.ds-dash-status.is-stale { color: var(--amber
|
|
474
|
+
.ds-dash-status.is-stale { color: var(--amber); }
|
|
469
475
|
.ds-dash-status.is-running { color: var(--accent); }
|
|
470
476
|
|
|
471
477
|
/* --- C2: dashboard sort/filter toolbar + stream-state line. --- */
|
|
@@ -483,7 +489,7 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
483
489
|
}
|
|
484
490
|
.ds-dash-stream { font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
485
491
|
.ds-dash-stream.is-lost { color: var(--flame); }
|
|
486
|
-
.ds-dash-stream.is-connecting { color: var(--amber
|
|
492
|
+
.ds-dash-stream.is-connecting { color: var(--amber); }
|
|
487
493
|
.ds-dash-header .spread { flex: 1; }
|
|
488
494
|
.ds-dash-errors-toggle {
|
|
489
495
|
padding: 4px 10px; min-height: 32px; border: var(--bw-hair) solid var(--bg-3);
|
|
@@ -509,7 +515,7 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
509
515
|
/* Stale/idle card: a positive amber inset bar (mirrors is-active) so a stuck
|
|
510
516
|
agent is flagged in a dense grid, not merely faded near-invisibly. The word
|
|
511
517
|
'idle' co-carries state, so this stays colour-blind safe. */
|
|
512
|
-
.ds-dash-card.is-stale { box-shadow: inset 2px 0 0 var(--amber
|
|
518
|
+
.ds-dash-card.is-stale { box-shadow: inset 2px 0 0 var(--amber); }
|
|
513
519
|
|
|
514
520
|
/* --- H3: dashboard live disc pulses; stale/error do not (handled by H1). --- */
|
|
515
521
|
|
|
@@ -666,7 +672,7 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
666
672
|
}
|
|
667
673
|
|
|
668
674
|
/* Stopping state: in-flight cancel reads distinctly from running/error. */
|
|
669
|
-
.ds-dash-status.is-stopping { color: var(--amber
|
|
675
|
+
.ds-dash-status.is-stopping { color: var(--amber); }
|
|
670
676
|
|
|
671
677
|
/* External (observed, not owned) session card: no stop control exists. */
|
|
672
678
|
.ds-dash-external {
|
|
@@ -686,7 +692,10 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
686
692
|
avatar-disc + colored-bubble layout. AgentChat passes flat:true; the demo
|
|
687
693
|
Chat keeps the bubble layout. Turns are full-width to --measure; the user vs
|
|
688
694
|
assistant distinction is a role label + a faint assistant background. */
|
|
689
|
-
|
|
695
|
+
/* Center the flat turn at the reading measure so a wide content column does not
|
|
696
|
+
dump a one-sided dead gutter (claude.ai/code centers the thread). Padding
|
|
697
|
+
scales through --density so data-density=compact tightens the thread. */
|
|
698
|
+
.chat-msg-flat { display: block; max-width: var(--measure); margin-inline: auto; padding: calc(var(--space-3) * var(--density, 1)) var(--space-4); margin-block: 0; background: none; border-radius: var(--r-2); }
|
|
690
699
|
.chat-msg-flat.them { background: color-mix(in oklab, var(--fg) 3%, transparent); }
|
|
691
700
|
.chat-msg-flat.you { background: none; }
|
|
692
701
|
.chat-msg-flat .chat-stack { max-width: var(--measure); width: 100%; margin: 0; align-items: stretch; }
|
|
@@ -695,8 +704,10 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
695
704
|
.chat-msg-flat.you .chat-role { color: var(--accent); }
|
|
696
705
|
.chat-msg-flat .chat-bubble { background: none; border: none; border-radius: 0; padding: 0; max-width: 100%; box-shadow: none; transform: none; }
|
|
697
706
|
.chat-msg-flat.you .chat-bubble { background: none; color: inherit; }
|
|
698
|
-
|
|
699
|
-
|
|
707
|
+
/* Hover tint exceeds each role's REST tint so the row gives feedback (and the
|
|
708
|
+
ladder stays monotonic): assistant 5% > its 3% rest; user 4% > transparent. */
|
|
709
|
+
.chat-msg-flat.them:hover { background: color-mix(in oklab, var(--fg) 5%, transparent); }
|
|
710
|
+
.chat-msg-flat.you:hover { background: color-mix(in oklab, var(--fg) 4%, transparent); }
|
|
700
711
|
.chat-msg-flat:hover .chat-bubble { transform: none; box-shadow: none; background: none; }
|
|
701
712
|
.chat-msg-flat .chat-avatar { display: none; }
|
|
702
713
|
|
|
@@ -730,6 +741,9 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
730
741
|
}
|
|
731
742
|
.chat-msg .chat-tool.tool-running .chat-tool-status { color: var(--accent); background: color-mix(in oklab, var(--accent) 12%, transparent); }
|
|
732
743
|
.chat-msg .chat-tool.tool-error .chat-tool-status { color: var(--flame); background: color-mix(in oklab, var(--flame) 12%, transparent); }
|
|
744
|
+
/* Completed tool: a positive (success) tone so done reads distinctly from the
|
|
745
|
+
neutral pill and from the accent-toned running pill (--success = green-2). */
|
|
746
|
+
.chat-msg .chat-tool.tool-done .chat-tool-status { color: var(--success); background: color-mix(in oklab, var(--success) 12%, transparent); }
|
|
733
747
|
.chat-tool-body { border-top: var(--bw-hair) solid var(--rule); padding: var(--space-2) var(--space-3); display: flex; flex-direction: column; gap: var(--space-2); }
|
|
734
748
|
.chat-tool-section { display: flex; flex-direction: column; gap: var(--space-1); }
|
|
735
749
|
.chat-tool-section-label { font-size: var(--fs-tiny); font-weight: 600; text-transform: uppercase; letter-spacing: var(--tr-caps); color: var(--fg-3); }
|
|
@@ -764,6 +778,10 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
764
778
|
}
|
|
765
779
|
@keyframes ds-arm-pulse { 0% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--warn) 55%, transparent); } 100% { box-shadow: 0 0 0 6px color-mix(in oklab, var(--warn) 0%, transparent); } }
|
|
766
780
|
.ds-dash-card.is-new { box-shadow: inset 2px 0 0 var(--accent), 0 0 0 1px color-mix(in oklab, var(--accent) 40%, transparent); }
|
|
781
|
+
/* Error card carries the strongest left-bar tone (flame > stale amber > active
|
|
782
|
+
accent), placed last so its inset bar wins source order over is-active/is-stale.
|
|
783
|
+
The full-perimeter border-color (line ~396) stays for extra severity emphasis. */
|
|
784
|
+
.ds-dash-card.is-error { box-shadow: inset 2px 0 0 var(--flame); }
|
|
767
785
|
@media (prefers-reduced-motion: no-preference) {
|
|
768
786
|
.ds-dash-card.is-new { animation: ds-card-in var(--dur-slow) var(--ease); }
|
|
769
787
|
}
|
|
@@ -775,7 +793,7 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
775
793
|
.ds-dash-breakdown { display: flex; align-items: center; gap: var(--space-1); font-size: var(--fs-sm); color: var(--fg-2); }
|
|
776
794
|
.ds-dash-breakdown .seg.is-running { color: var(--green); font-weight: 600; }
|
|
777
795
|
.ds-dash-breakdown .seg.is-error { color: var(--flame); font-weight: 600; }
|
|
778
|
-
.ds-dash-breakdown .seg.is-idle { color: var(--amber
|
|
796
|
+
.ds-dash-breakdown .seg.is-idle { color: var(--amber); }
|
|
779
797
|
.ds-dash-stream-disc { display: inline-flex; align-items: center; gap: var(--space-1); }
|
|
780
798
|
.ds-dash-selectall { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--fs-tiny); color: var(--fg-2); cursor: pointer; background: none; border: none; padding: var(--space-1); }
|
|
781
799
|
.ds-dash-selectall:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
@@ -796,7 +814,7 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
796
814
|
.ds-preview-code code { color: var(--fg); }
|
|
797
815
|
.ds-preview-code .token.comment, .ds-preview-code .token.prolog, .ds-preview-code .token.doctype, .ds-preview-code .token.cdata { color: var(--fg-3); }
|
|
798
816
|
.ds-preview-code .token.punctuation { color: var(--fg-2); }
|
|
799
|
-
.ds-preview-code .token.property, .ds-preview-code .token.tag, .ds-preview-code .token.boolean, .ds-preview-code .token.number, .ds-preview-code .token.constant, .ds-preview-code .token.symbol { color: var(--purple-2
|
|
817
|
+
.ds-preview-code .token.property, .ds-preview-code .token.tag, .ds-preview-code .token.boolean, .ds-preview-code .token.number, .ds-preview-code .token.constant, .ds-preview-code .token.symbol { color: var(--purple-2); }
|
|
800
818
|
.ds-preview-code .token.selector, .ds-preview-code .token.attr-name, .ds-preview-code .token.string, .ds-preview-code .token.char, .ds-preview-code .token.builtin { color: var(--code-string, var(--green)); }
|
|
801
819
|
.ds-preview-code .token.atrule, .ds-preview-code .token.attr-value, .ds-preview-code .token.keyword { color: var(--code-keyword, var(--sky)); }
|
|
802
820
|
.ds-preview-code .token.function, .ds-preview-code .token.class-name { color: var(--code-fn, var(--flame)); }
|
|
@@ -842,3 +860,8 @@ button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); o
|
|
|
842
860
|
.row-act, .ds-dash-errors-toggle, .agentchat-export-act, .ds-file-more-btn,
|
|
843
861
|
.agentchat-install-copy, .ds-upload-act, .ds-session-meta-copy { min-height: 44px; }
|
|
844
862
|
}
|
|
863
|
+
|
|
864
|
+
/* 11th run: ultrawide widens the reading measure where there is room. */
|
|
865
|
+
@media (min-width: 1600px) {
|
|
866
|
+
.agentchat-thread { --measure: 84ch; }
|
|
867
|
+
}
|
package/colors_and_type.css
CHANGED
|
@@ -197,22 +197,31 @@
|
|
|
197
197
|
--size-sm: 32px;
|
|
198
198
|
--size-base: 42px;
|
|
199
199
|
--size-lg: 56px;
|
|
200
|
+
|
|
201
|
+
/* Unified focus-ring tokens (single source for the design system). Outset
|
|
202
|
+
rings (the default) tokenize colour+width+offset; bordered text fields use
|
|
203
|
+
the inset variant. Deliberate negative offsets on edge-flush/clipping
|
|
204
|
+
containers stay literal. */
|
|
205
|
+
--focus-color: var(--accent);
|
|
206
|
+
--focus-w: 2px;
|
|
207
|
+
--focus-offset: 2px;
|
|
208
|
+
--focus-ring-inset: inset 0 0 0 var(--focus-w) var(--focus-color);
|
|
200
209
|
}
|
|
201
210
|
|
|
202
211
|
/* ============================================================
|
|
203
212
|
Focus-visible styles for keyboard navigation
|
|
204
213
|
============================================================ */
|
|
205
214
|
:focus-visible {
|
|
206
|
-
outline:
|
|
207
|
-
outline-offset:
|
|
215
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
216
|
+
outline-offset: var(--focus-offset);
|
|
208
217
|
}
|
|
209
218
|
|
|
210
219
|
/* Button variants with focus-visible */
|
|
211
220
|
.btn:focus-visible,
|
|
212
221
|
.btn-primary:focus-visible,
|
|
213
222
|
.btn-ghost:focus-visible {
|
|
214
|
-
outline:
|
|
215
|
-
outline-offset:
|
|
223
|
+
outline: var(--focus-w) solid var(--focus-color);
|
|
224
|
+
outline-offset: var(--focus-offset);
|
|
216
225
|
}
|
|
217
226
|
|
|
218
227
|
/* Link focus-visible */
|
|
@@ -260,6 +269,10 @@ select:focus-visible {
|
|
|
260
269
|
--danger: oklch(0.68 0.19 25);
|
|
261
270
|
--flame: #FF5A1F;
|
|
262
271
|
--amber: #D9A93A;
|
|
272
|
+
/* warn/sky dark-tuned pairs (mirror flame/amber): the :root paper values
|
|
273
|
+
(#E0241A / #3A6EFF) are too dark on ink; these clear AA 4.5:1 on --ink. */
|
|
274
|
+
--warn: #FF5A52;
|
|
275
|
+
--sky: #6E9BFF;
|
|
263
276
|
--code-string: var(--green-2);
|
|
264
277
|
--code-keyword: var(--sky);
|
|
265
278
|
--code-fn: var(--flame);
|
|
@@ -293,6 +306,8 @@ select:focus-visible {
|
|
|
293
306
|
--accent-bright: var(--green-2);
|
|
294
307
|
--flame: #FF5A1F;
|
|
295
308
|
--amber: #D9A93A;
|
|
309
|
+
--warn: #FF5A52;
|
|
310
|
+
--sky: #6E9BFF;
|
|
296
311
|
--code-string: var(--green-2);
|
|
297
312
|
--code-keyword: var(--sky);
|
|
298
313
|
--code-fn: var(--flame);
|