anentrypoint-design 0.0.199 → 0.0.201
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 +53 -0
- package/chat.css +220 -5
- package/dist/247420.css +273 -5
- package/dist/247420.js +12 -12
- package/package.json +1 -1
- package/src/components/agent-chat.js +77 -6
- package/src/components/chat.js +65 -5
- package/src/components/content.js +69 -8
- package/src/components/context-pane.js +21 -2
- package/src/components/files-modals.js +66 -14
- package/src/components/files.js +93 -16
- package/src/components/sessions.js +112 -14
- package/src/components/shell.js +14 -4
- package/src/components.js +4 -4
package/dist/247420.css
CHANGED
|
@@ -1280,6 +1280,10 @@
|
|
|
1280
1280
|
/* On mobile, fold meta under the title and keep actions inline. */
|
|
1281
1281
|
.ds-247420 .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
1282
1282
|
.ds-247420 .ds-file-row .ds-file-actions { opacity: 1; }
|
|
1283
|
+
/* H4: floor finger-sized controls so file actions/sort/filter/breadcrumb are
|
|
1284
|
+
reachable by touch (cohesion sweep). */
|
|
1285
|
+
.ds-247420 .ds-file-act, .ds-247420 .ds-file-sort-btn, .ds-247420 .ds-crumb-seg { min-height: 44px; }
|
|
1286
|
+
.ds-247420 .ds-file-filter-input { min-height: 44px; }
|
|
1283
1287
|
|
|
1284
1288
|
/* Chat */
|
|
1285
1289
|
.ds-247420 .chat-stack { max-width: 100%; min-width: 0; }
|
|
@@ -3159,6 +3163,13 @@
|
|
|
3159
3163
|
.ds-247420 .ws-shell.ws-no-sessions { grid-template-columns: var(--ws-rail-w) 1fr var(--ws-pane-w); grid-template-areas: "rail content pane"; }
|
|
3160
3164
|
.ds-247420 .ws-shell.ws-no-pane.ws-no-sessions { grid-template-columns: var(--ws-rail-w) 1fr; grid-template-areas: "rail content"; }
|
|
3161
3165
|
.ds-247420 .ws-shell.ws-no-pane:not(.ws-no-sessions) { grid-template-columns: var(--ws-rail-w) var(--ws-sessions-w) 1fr; grid-template-areas: "rail sessions content"; }
|
|
3166
|
+
/* G1 stable frame: when a tab has no pane but asks to keep the column geometry
|
|
3167
|
+
(ws-no-pane + ws-pane-collapsed), KEEP the 4-track grid with the pane track
|
|
3168
|
+
at width 0 instead of collapsing to a 3-track layout - so the shell does not
|
|
3169
|
+
re-flow its column count on tab switch. The pane track stays present (0px),
|
|
3170
|
+
so chat/history/files/live/settings share one geometry. */
|
|
3171
|
+
.ds-247420 .ws-shell.ws-no-pane.ws-pane-collapsed:not(.ws-no-sessions) { grid-template-columns: var(--ws-rail-w) var(--ws-sessions-w) 1fr var(--ws-pane-w); grid-template-areas: "rail sessions content pane"; }
|
|
3172
|
+
.ds-247420 .ws-shell.ws-no-pane.ws-pane-collapsed.ws-no-sessions { grid-template-columns: var(--ws-rail-w) 1fr var(--ws-pane-w); grid-template-areas: "rail content pane"; }
|
|
3162
3173
|
.ds-247420 .ws-shell.ws-rail-collapsed { --ws-rail-w: var(--ws-rail-w-collapsed); }
|
|
3163
3174
|
.ds-247420 .ws-shell.ws-pane-collapsed { --ws-pane-w: 0px; }
|
|
3164
3175
|
|
|
@@ -3289,6 +3300,48 @@
|
|
|
3289
3300
|
.ds-247420 .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3290
3301
|
.ds-247420 .ws-scrim { display: none; }
|
|
3291
3302
|
|
|
3303
|
+
/* ============================================================
|
|
3304
|
+
Row title highlight, expanded-row actions, filter pills.
|
|
3305
|
+
============================================================ */
|
|
3306
|
+
|
|
3307
|
+
/* Highlighted match inside a Row title (Row `highlight` prop). */
|
|
3308
|
+
.ds-247420 .ds-hl { background: color-mix(in oklab, var(--accent) 25%, transparent); color: inherit; border-radius: 2px; }
|
|
3309
|
+
|
|
3310
|
+
/* Action strip rendered inside an EXPANDED Row (Row `actions` prop). The
|
|
3311
|
+
buttons stop propagation so they never fire the row onClick. */
|
|
3312
|
+
.ds-247420 .row-actions { display: flex; flex-wrap: wrap; gap: var(--space-2); width: 100%; padding-top: var(--space-2); }
|
|
3313
|
+
.ds-247420 .row-act {
|
|
3314
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
3315
|
+
padding: 4px 10px; min-height: 28px;
|
|
3316
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-1);
|
|
3317
|
+
color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-tiny); cursor: pointer;
|
|
3318
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
3319
|
+
}
|
|
3320
|
+
.ds-247420 .row-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
3321
|
+
.ds-247420 .row-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
3322
|
+
|
|
3323
|
+
/* FilterPills - a group of pill toggle buttons (aria-pressed). */
|
|
3324
|
+
.ds-247420 .ds-filter-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); }
|
|
3325
|
+
.ds-247420 .ds-filter-pill {
|
|
3326
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
3327
|
+
padding: 4px 12px; min-height: 28px;
|
|
3328
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: 999px;
|
|
3329
|
+
color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-tiny); cursor: pointer;
|
|
3330
|
+
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
3331
|
+
}
|
|
3332
|
+
.ds-247420 .ds-filter-pill:hover { background: var(--bg-3); color: var(--fg); }
|
|
3333
|
+
.ds-247420 .ds-filter-pill.active { background: var(--accent-tint); color: var(--accent); border-color: var(--accent); }
|
|
3334
|
+
.ds-247420 .ds-filter-pill:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
3335
|
+
|
|
3336
|
+
/* Touch floor for the new small controls. */
|
|
3337
|
+
@media (pointer: coarse) {
|
|
3338
|
+
.ds-247420 .row-act, .ds-247420 .ds-filter-pill { min-height: 44px; }
|
|
3339
|
+
}
|
|
3340
|
+
|
|
3341
|
+
/* Disabled file actions (read-only row / in-flight mutation) stay visible but inert. */
|
|
3342
|
+
.ds-247420 .ds-file-act:disabled { opacity: .45; cursor: default; }
|
|
3343
|
+
.ds-247420 .ds-file-act:disabled:hover { background: transparent; color: var(--fg-3); }
|
|
3344
|
+
|
|
3292
3345
|
/* community.css */
|
|
3293
3346
|
/* ============================================================
|
|
3294
3347
|
247420 design system — community surface (Discord-style chat)
|
|
@@ -4967,10 +5020,12 @@
|
|
|
4967
5020
|
.ds-247420 .chat-msg-actions { display: flex; gap: 2px; margin-top: 3px; opacity: 0; transition: opacity var(--dur-snap, .12s) var(--ease, ease); }
|
|
4968
5021
|
.ds-247420 .chat-msg:hover .chat-msg-actions, .ds-247420 .chat-msg:focus-within .chat-msg-actions { opacity: 1; }
|
|
4969
5022
|
.ds-247420 .chat-msg-action {
|
|
4970
|
-
display: inline-flex; align-items: center; justify-content: center;
|
|
4971
|
-
width: 26px; height: 26px; padding: 0; cursor: pointer;
|
|
5023
|
+
display: inline-flex; align-items: center; justify-content: center; gap: 4px;
|
|
5024
|
+
min-width: 26px; height: 26px; padding: 0 6px; cursor: pointer;
|
|
4972
5025
|
border: none; border-radius: var(--r-1, 4px); background: none; color: var(--fg-3);
|
|
5026
|
+
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
4973
5027
|
}
|
|
5028
|
+
.ds-247420 .chat-msg-action-label { font-size: var(--fs-tiny); }
|
|
4974
5029
|
.ds-247420 .chat-msg-action:hover { background: var(--bg-2); color: var(--fg); }
|
|
4975
5030
|
.ds-247420 .chat-msg-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
|
|
4976
5031
|
|
|
@@ -5008,6 +5063,50 @@
|
|
|
5008
5063
|
.ds-247420 .agentchat-empty-suggestion:hover { background: color-mix(in srgb, var(--accent, var(--fg)) 12%, transparent); }
|
|
5009
5064
|
.ds-247420 .agentchat-empty-suggestion:focus-visible { outline: 2px solid var(--accent, var(--fg)); outline-offset: 2px; }
|
|
5010
5065
|
|
|
5066
|
+
/* Guided install path in the empty state: copy line + monospaced command rows
|
|
5067
|
+
(each with its own copy button) + a recheck button. No animation. */
|
|
5068
|
+
.ds-247420 .agentchat-install {
|
|
5069
|
+
margin-top: var(--space-4, 16px);
|
|
5070
|
+
display: flex;
|
|
5071
|
+
flex-direction: column;
|
|
5072
|
+
gap: var(--space-2, 8px);
|
|
5073
|
+
text-align: left;
|
|
5074
|
+
width: 100%;
|
|
5075
|
+
}
|
|
5076
|
+
.ds-247420 .agentchat-install-text { margin: 0; font-size: .9em; color: var(--fg-3); }
|
|
5077
|
+
.ds-247420 .agentchat-install-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: var(--space-1, 4px); }
|
|
5078
|
+
.ds-247420 .agentchat-install-row {
|
|
5079
|
+
display: flex; align-items: center; gap: var(--space-2, 8px);
|
|
5080
|
+
padding: var(--space-1, 4px) var(--space-2, 8px);
|
|
5081
|
+
border: var(--bw-hair) solid var(--rule);
|
|
5082
|
+
border-radius: var(--r-1, 4px);
|
|
5083
|
+
background: var(--bg-2);
|
|
5084
|
+
}
|
|
5085
|
+
.ds-247420 .agentchat-install-agent { flex: 0 0 auto; font-size: var(--fs-tiny); color: var(--fg-3); min-width: 8ch; }
|
|
5086
|
+
.ds-247420 .agentchat-install-cmd {
|
|
5087
|
+
flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
|
|
5088
|
+
font-family: var(--ff-mono); font-size: var(--fs-sm); color: var(--fg-2, var(--fg));
|
|
5089
|
+
}
|
|
5090
|
+
.ds-247420 .agentchat-install-copy {
|
|
5091
|
+
flex: 0 0 auto; cursor: pointer; padding: 2px 8px; min-height: 24px;
|
|
5092
|
+
border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-1, 4px);
|
|
5093
|
+
background: none; color: var(--fg-3);
|
|
5094
|
+
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
5095
|
+
}
|
|
5096
|
+
.ds-247420 .agentchat-install-copy:hover { background: var(--bg-3); color: var(--fg); }
|
|
5097
|
+
.ds-247420 .agentchat-install-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5098
|
+
.ds-247420 .agentchat-install-actions { display: flex; justify-content: flex-start; }
|
|
5099
|
+
|
|
5100
|
+
/* Host-supplied transcript export actions riding the controls row. */
|
|
5101
|
+
.ds-247420 .agentchat-export-act {
|
|
5102
|
+
cursor: pointer; padding: 4px 10px; min-height: 32px;
|
|
5103
|
+
border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-1, 4px);
|
|
5104
|
+
background: none; color: var(--fg-3);
|
|
5105
|
+
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
5106
|
+
}
|
|
5107
|
+
.ds-247420 .agentchat-export-act:hover { background: var(--bg-2); color: var(--fg); }
|
|
5108
|
+
.ds-247420 .agentchat-export-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5109
|
+
|
|
5011
5110
|
/* "working" tail: a long silent tool call shouldn't read as frozen. */
|
|
5012
5111
|
.ds-247420 .agentchat-working {
|
|
5013
5112
|
display: flex;
|
|
@@ -5052,12 +5151,27 @@
|
|
|
5052
5151
|
Global status disc — a CSS-drawn status indicator (no text glyph) usable
|
|
5053
5152
|
outside .agentchat-status (session rows, dashboard cards). Tone via modifier.
|
|
5054
5153
|
---------------------------------------------------------------------------- */
|
|
5154
|
+
/* Single canonical status disc — one source for live/error/connecting/stale
|
|
5155
|
+
everywhere (crumb dot, conversation row, dashboard card, composer status).
|
|
5156
|
+
The app's index.html disc/pulse override is deleted in favour of this. Only
|
|
5157
|
+
the -live disc pulses; -stale is deliberately static (a stuck session must NOT
|
|
5158
|
+
read as busy). Pulse colour is derived from --accent via color-mix so it
|
|
5159
|
+
tracks the theme instead of a hardcoded rgba. */
|
|
5055
5160
|
.ds-247420 .status-dot-disc {
|
|
5056
5161
|
display: inline-block; width: 8px; height: 8px; border-radius: 50%;
|
|
5057
5162
|
background: var(--fg-3); flex: 0 0 auto;
|
|
5058
5163
|
}
|
|
5059
|
-
.ds-247420 .status-dot-disc.status-dot-live { background: var(--
|
|
5164
|
+
.ds-247420 .status-dot-disc.status-dot-live { background: var(--accent); animation: status-disc-pulse 1.8s ease-in-out infinite; }
|
|
5060
5165
|
.ds-247420 .status-dot-disc.status-dot-error { background: var(--flame); }
|
|
5166
|
+
.ds-247420 .status-dot-disc.status-dot-connecting { background: var(--amber, #d9a93a); }
|
|
5167
|
+
.ds-247420 .status-dot-disc.status-dot-stale { background: var(--amber, #d9a93a); }
|
|
5168
|
+
@keyframes status-disc-pulse {
|
|
5169
|
+
0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 55%, transparent); }
|
|
5170
|
+
50% { box-shadow: 0 0 0 4px color-mix(in oklab, var(--accent) 0%, transparent); }
|
|
5171
|
+
}
|
|
5172
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5173
|
+
.ds-247420 .status-dot-disc.status-dot-live { animation: none; }
|
|
5174
|
+
}
|
|
5061
5175
|
|
|
5062
5176
|
/* ----------------------------------------------------------------------------
|
|
5063
5177
|
ConversationList — left-rail "Chats" column.
|
|
@@ -5097,8 +5211,10 @@
|
|
|
5097
5211
|
.ds-247420 .ds-session-row.rail-green::before, .ds-247420 .ds-session-row.rail-purple::before, .ds-247420 .ds-session-row.rail-flame::before {
|
|
5098
5212
|
content: ''; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; border-radius: 3px;
|
|
5099
5213
|
}
|
|
5100
|
-
|
|
5101
|
-
|
|
5214
|
+
/* Rail tones MUST match .row.rail-* in app-shell.css so the same semantic state
|
|
5215
|
+
reads as one colour across the conversation list and content rows. */
|
|
5216
|
+
.ds-247420 .ds-session-row.rail-green::before { background: var(--accent); }
|
|
5217
|
+
.ds-247420 .ds-session-row.rail-purple::before { background: var(--purple-2, #7F18A4); }
|
|
5102
5218
|
.ds-247420 .ds-session-row.rail-flame::before { background: var(--flame); }
|
|
5103
5219
|
.ds-247420 .ds-session-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
5104
5220
|
.ds-247420 .ds-session-title { font-size: var(--fs-sm); color: var(--fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
@@ -5147,6 +5263,158 @@
|
|
|
5147
5263
|
.ds-247420 .ds-context .row .sub { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
5148
5264
|
.ds-247420 .ds-context-actions { display: flex; gap: var(--space-2); }
|
|
5149
5265
|
|
|
5266
|
+
/* ============================================================================
|
|
5267
|
+
Cohesion sweep (gui-cohesion.js): one-product polish across surfaces.
|
|
5268
|
+
============================================================================ */
|
|
5269
|
+
|
|
5270
|
+
/* --- A1/A2/E3: per-block code copy. The <pre> is wrapped in .chat-code-block
|
|
5271
|
+
(position:relative) so the copy button sits top-right and reveals on hover/
|
|
5272
|
+
focus-within, matching the .chat-msg-actions pattern. The structured CodeNode
|
|
5273
|
+
head + preview head place the button inline (always visible). --- */
|
|
5274
|
+
.ds-247420 .chat-code-block { position: relative; }
|
|
5275
|
+
.ds-247420 .chat-code-copy {
|
|
5276
|
+
position: absolute; top: 6px; right: 6px;
|
|
5277
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
5278
|
+
min-width: 48px; min-height: 24px; padding: 2px 8px;
|
|
5279
|
+
border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-1, 4px);
|
|
5280
|
+
background: var(--bg-2); color: var(--fg-2); cursor: pointer;
|
|
5281
|
+
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
5282
|
+
opacity: 0; transition: opacity var(--dur-snap, .12s) var(--ease, ease);
|
|
5283
|
+
}
|
|
5284
|
+
.ds-247420 .chat-code-block:hover .chat-code-copy, .ds-247420 .chat-code-block:focus-within .chat-code-copy { opacity: 1; }
|
|
5285
|
+
.ds-247420 .chat-code-copy.is-copied { color: var(--accent); border-color: var(--accent); }
|
|
5286
|
+
.ds-247420 .chat-code-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
|
|
5287
|
+
/* Head-placed copy (structured CodeNode + FilePreviewCode) is always visible. */
|
|
5288
|
+
.ds-247420 .chat-code-head .spread { flex: 1; }
|
|
5289
|
+
.ds-247420 .chat-code-copy-head { position: static; opacity: 1; }
|
|
5290
|
+
|
|
5291
|
+
/* --- B1: streaming pre shell — monospaced bubble while a fenced block streams,
|
|
5292
|
+
so it does not reflow prose->block on settle. --- */
|
|
5293
|
+
.ds-247420 .chat-stream-pre pre { margin: 0; white-space: pre-wrap; word-break: break-word; font-family: var(--ff-mono); font-size: var(--fs-sm); }
|
|
5294
|
+
|
|
5295
|
+
/* --- A5: composer context line (agent / model / cwd at point of typing). --- */
|
|
5296
|
+
.ds-247420 .chat-composer-context {
|
|
5297
|
+
display: block; width: 100%; text-align: left; padding: 4px var(--space-3) 0;
|
|
5298
|
+
background: none; border: none; cursor: default; color: var(--fg-3);
|
|
5299
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny);
|
|
5300
|
+
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
5301
|
+
}
|
|
5302
|
+
.ds-247420 button.chat-composer-context { cursor: pointer; }
|
|
5303
|
+
.ds-247420 button.chat-composer-context:hover { color: var(--fg-2); }
|
|
5304
|
+
.ds-247420 button.chat-composer-context:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5305
|
+
|
|
5306
|
+
/* --- B2: follow-up chips below the last settled assistant turn. --- */
|
|
5307
|
+
.ds-247420 .agentchat-followups { display: flex; flex-wrap: wrap; gap: var(--space-2); padding: var(--space-2) var(--space-3); }
|
|
5308
|
+
|
|
5309
|
+
/* --- C1: stale/idle dashboard status (static, NOT pulsing). --- */
|
|
5310
|
+
.ds-247420 .ds-dash-status.is-stale { color: var(--amber, #d9a93a); }
|
|
5311
|
+
.ds-247420 .ds-dash-status.is-running { color: var(--accent); }
|
|
5312
|
+
|
|
5313
|
+
/* --- C2: dashboard sort/filter toolbar + stream-state line. --- */
|
|
5314
|
+
.ds-247420 .ds-dash-toolbar { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
|
|
5315
|
+
.ds-247420 .ds-dash-stream { font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
5316
|
+
.ds-247420 .ds-dash-stream.is-lost { color: var(--flame); }
|
|
5317
|
+
.ds-247420 .ds-dash-stream.is-connecting { color: var(--amber, #d9a93a); }
|
|
5318
|
+
.ds-247420 .ds-dash-header .spread { flex: 1; }
|
|
5319
|
+
.ds-247420 .ds-dash-errors-toggle {
|
|
5320
|
+
padding: 4px 10px; min-height: 32px; border: var(--bw-hair) solid var(--bg-3);
|
|
5321
|
+
border-radius: var(--r-1); background: var(--bg-2); color: var(--fg-2);
|
|
5322
|
+
cursor: pointer; font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
5323
|
+
}
|
|
5324
|
+
.ds-247420 .ds-dash-errors-toggle.active { background: var(--accent-tint); color: var(--accent); border-color: var(--accent); }
|
|
5325
|
+
.ds-247420 .ds-dash-errors-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5326
|
+
|
|
5327
|
+
/* --- C3: per-card select checkbox. --- */
|
|
5328
|
+
.ds-247420 .ds-dash-select {
|
|
5329
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
5330
|
+
min-width: 24px; min-height: 24px; padding: 0; cursor: pointer;
|
|
5331
|
+
border: none; background: none; color: var(--fg-3);
|
|
5332
|
+
font-family: var(--ff-mono); font-size: var(--fs-sm);
|
|
5333
|
+
}
|
|
5334
|
+
.ds-247420 .ds-dash-select[aria-checked="true"] { color: var(--accent); }
|
|
5335
|
+
.ds-247420 .ds-dash-select:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5336
|
+
|
|
5337
|
+
/* --- C5: active dashboard card (current conversation). --- */
|
|
5338
|
+
.ds-247420 .ds-dash-card.is-active { box-shadow: inset 2px 0 0 var(--accent); }
|
|
5339
|
+
.ds-247420 .ds-dash-card.is-selected { background: var(--accent-tint); }
|
|
5340
|
+
.ds-247420 .ds-dash-card.is-stale { opacity: .92; }
|
|
5341
|
+
|
|
5342
|
+
/* --- H3: dashboard live disc pulses; stale/error do not (handled by H1). --- */
|
|
5343
|
+
|
|
5344
|
+
/* --- C6: per-tab conversation-list caption. --- */
|
|
5345
|
+
.ds-247420 .ds-session-caption { padding: var(--space-2) var(--space-3) 0; font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
5346
|
+
|
|
5347
|
+
/* --- F1: context-pane empty state. --- */
|
|
5348
|
+
.ds-247420 .ds-context-empty { padding: var(--space-4) var(--space-3); color: var(--fg-3); font-size: var(--fs-sm); line-height: 1.5; }
|
|
5349
|
+
|
|
5350
|
+
/* --- E1: inline file preview pane (split view, non-modal). --- */
|
|
5351
|
+
.ds-247420 .ds-preview-pane { display: flex; flex-direction: column; min-height: 0; height: 100%; overflow: hidden; }
|
|
5352
|
+
.ds-247420 .ds-preview-pane:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
5353
|
+
.ds-247420 .ds-preview-pane .ds-preview-body { flex: 1; min-height: 0; overflow: auto; }
|
|
5354
|
+
.ds-247420 .ds-preview-pane-empty { align-items: center; justify-content: center; color: var(--fg-3); font-size: var(--fs-sm); }
|
|
5355
|
+
.ds-247420 .ds-preview-code-wrap { display: flex; flex-direction: column; min-height: 0; }
|
|
5356
|
+
.ds-247420 .ds-preview-code-head { flex: 0 0 auto; }
|
|
5357
|
+
/* --- E2: prev/next stepper in preview head. --- */
|
|
5358
|
+
.ds-247420 .ds-preview-step { display: inline-flex; gap: 2px; }
|
|
5359
|
+
.ds-247420 .ds-preview-step .ds-file-act { min-width: 40px; padding: 0 6px; font-family: var(--ff-body); font-size: var(--fs-tiny); }
|
|
5360
|
+
|
|
5361
|
+
/* --- D1: file grid "show more" row. --- */
|
|
5362
|
+
.ds-247420 .ds-file-more { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3); justify-content: center; }
|
|
5363
|
+
.ds-247420 .ds-file-more-count { font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
5364
|
+
.ds-247420 .ds-file-more-btn {
|
|
5365
|
+
padding: 4px 12px; min-height: 32px; border: var(--bw-hair) solid var(--bg-3);
|
|
5366
|
+
border-radius: var(--r-1); background: var(--bg-2); color: var(--fg-2); cursor: pointer;
|
|
5367
|
+
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
5368
|
+
}
|
|
5369
|
+
.ds-247420 .ds-file-more-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5370
|
+
/* --- D3: locked/no-access file row. --- */
|
|
5371
|
+
.ds-247420 .ds-file-row.is-locked { opacity: .6; }
|
|
5372
|
+
|
|
5373
|
+
/* --- D4: roots picker segmented control. --- */
|
|
5374
|
+
.ds-247420 .ds-roots-picker { display: inline-flex; gap: 2px; padding: 2px; background: var(--bg-2); border-radius: var(--r-1); }
|
|
5375
|
+
.ds-247420 .ds-roots-tab {
|
|
5376
|
+
padding: 4px 10px; min-height: 32px; border: none; border-radius: var(--r-1);
|
|
5377
|
+
background: none; color: var(--fg-3); cursor: pointer;
|
|
5378
|
+
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
5379
|
+
}
|
|
5380
|
+
.ds-247420 .ds-roots-tab.active { background: var(--bg); color: var(--fg); }
|
|
5381
|
+
.ds-247420 .ds-roots-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5382
|
+
|
|
5383
|
+
/* --- H4: touch targets. On a coarse pointer / narrow screen the hover-revealed
|
|
5384
|
+
action rows are made permanently visible and small controls floor to 44px so
|
|
5385
|
+
they are reachable by finger. --- */
|
|
5386
|
+
@media (pointer: coarse), (max-width: 640px) {
|
|
5387
|
+
.ds-247420 .chat-msg-actions { opacity: 1; }
|
|
5388
|
+
.ds-247420 .chat-code-copy { opacity: 1; }
|
|
5389
|
+
.ds-247420 .chat-msg-action { min-width: 44px; height: 44px; }
|
|
5390
|
+
.ds-247420 .ds-dash-select { min-width: 44px; min-height: 44px; }
|
|
5391
|
+
.ds-247420 .ds-file-more-btn, .ds-247420 .ds-roots-tab, .ds-247420 .ds-dash-errors-toggle { min-height: 44px; }
|
|
5392
|
+
.ds-247420 .agentchat-export-act { min-height: 44px; }
|
|
5393
|
+
.ds-247420 .agentchat-install-copy { min-height: 44px; min-width: 44px; }
|
|
5394
|
+
}
|
|
5395
|
+
|
|
5396
|
+
/* --- SessionMeta: middot-separated session metadata strip. Class is
|
|
5397
|
+
.ds-session-meta-strip (.ds-session-meta is taken by ConversationList row
|
|
5398
|
+
meta above). Wraps at narrow widths. --- */
|
|
5399
|
+
.ds-247420 .ds-session-meta-strip {
|
|
5400
|
+
display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
|
|
5401
|
+
font-size: var(--fs-tiny); color: var(--fg-3);
|
|
5402
|
+
}
|
|
5403
|
+
.ds-247420 .ds-session-meta-item { display: inline-flex; align-items: center; gap: var(--space-1); min-width: 0; }
|
|
5404
|
+
.ds-247420 .ds-session-meta-item + .ds-session-meta-item::before { content: '\00B7'; color: var(--fg-3); margin-right: var(--space-1); }
|
|
5405
|
+
.ds-247420 .ds-session-meta-label { color: var(--fg-3); }
|
|
5406
|
+
.ds-247420 .ds-session-meta-value { font-family: var(--ff-mono); color: var(--fg-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
5407
|
+
.ds-247420 .ds-session-meta-copy {
|
|
5408
|
+
padding: 2px 8px; min-height: 24px; cursor: pointer;
|
|
5409
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-1);
|
|
5410
|
+
color: var(--fg-3); font-family: var(--ff-body); font-size: var(--fs-micro);
|
|
5411
|
+
}
|
|
5412
|
+
.ds-247420 .ds-session-meta-copy:hover { background: var(--bg-3); color: var(--fg); }
|
|
5413
|
+
.ds-247420 .ds-session-meta-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5414
|
+
@media (pointer: coarse), (max-width: 640px) {
|
|
5415
|
+
.ds-247420 .ds-session-meta-copy { min-height: 44px; min-width: 44px; }
|
|
5416
|
+
}
|
|
5417
|
+
|
|
5150
5418
|
/* editor-primitives.css */
|
|
5151
5419
|
/* editor-primitives.css — chrome for in-engine editors, inspectors, IDEs,
|
|
5152
5420
|
debug HUDs. All rules under .ds-247420 scope (build prefixes). Tokens
|