anentrypoint-design 0.0.196 → 0.0.198
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 +185 -0
- package/chat.css +134 -0
- package/dist/247420.css +319 -0
- package/dist/247420.js +15 -15
- package/package.json +1 -1
- package/src/components/agent-chat.js +63 -10
- package/src/components/chat.js +19 -2
- package/src/components/context-pane.js +77 -0
- package/src/components/files.js +81 -2
- package/src/components/sessions.js +147 -0
- package/src/components/shell.js +189 -0
- package/src/components.js +8 -1
- package/src/kits/os/theme.css +40 -0
package/dist/247420.css
CHANGED
|
@@ -1472,6 +1472,39 @@
|
|
|
1472
1472
|
flex-direction: column;
|
|
1473
1473
|
gap: 4px;
|
|
1474
1474
|
}
|
|
1475
|
+
.ds-247420 .ds-file-grid:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-2); }
|
|
1476
|
+
|
|
1477
|
+
/* Listing wrapper holds the optional filter + sort header above the grid. */
|
|
1478
|
+
.ds-247420 .ds-file-listing { display: flex; flex-direction: column; gap: var(--space-2); min-height: 0; }
|
|
1479
|
+
.ds-247420 .ds-file-filter { padding: 0 0 var(--space-1); }
|
|
1480
|
+
.ds-247420 .ds-file-filter-input {
|
|
1481
|
+
width: 100%; padding: 8px 12px; font-size: var(--fs-sm);
|
|
1482
|
+
background: var(--bg); color: var(--fg);
|
|
1483
|
+
border: var(--bw-hair) solid var(--rule); border-radius: var(--r-2);
|
|
1484
|
+
}
|
|
1485
|
+
.ds-247420 .ds-file-filter-input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1486
|
+
.ds-247420 .ds-file-sort { display: flex; gap: var(--space-2); padding: 0 var(--space-2) var(--space-1); }
|
|
1487
|
+
.ds-247420 .ds-file-sort-btn {
|
|
1488
|
+
font-size: var(--fs-tiny); font-family: var(--ff-mono); color: var(--fg-3);
|
|
1489
|
+
background: none; border: none; cursor: pointer; padding: 2px 4px; border-radius: var(--r-1);
|
|
1490
|
+
}
|
|
1491
|
+
.ds-247420 .ds-file-sort-btn:hover { color: var(--fg-2); background: var(--bg-2); }
|
|
1492
|
+
.ds-247420 .ds-file-sort-btn.active { color: var(--accent); }
|
|
1493
|
+
.ds-247420 .ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1494
|
+
|
|
1495
|
+
/* Skeleton shimmer rows shown while a directory loads. */
|
|
1496
|
+
.ds-247420 .ds-file-row-skeleton { cursor: default; pointer-events: none; }
|
|
1497
|
+
.ds-247420 .ds-skel { display: inline-block; border-radius: var(--r-1); background: var(--bg-2); position: relative; overflow: hidden; }
|
|
1498
|
+
.ds-247420 .ds-skel::after {
|
|
1499
|
+
content: ''; position: absolute; inset: 0;
|
|
1500
|
+
background: linear-gradient(90deg, transparent, var(--bg-3), transparent);
|
|
1501
|
+
transform: translateX(-100%); animation: ds-skel-shimmer 1.2s infinite;
|
|
1502
|
+
}
|
|
1503
|
+
.ds-247420 .ds-skel-icon { width: 22px; height: 22px; }
|
|
1504
|
+
.ds-247420 .ds-skel-title { height: 12px; width: 60%; }
|
|
1505
|
+
.ds-247420 .ds-skel-meta { height: 10px; width: 64px; margin-left: auto; }
|
|
1506
|
+
@keyframes ds-skel-shimmer { 100% { transform: translateX(100%); } }
|
|
1507
|
+
@media (prefers-reduced-motion: reduce) { .ds-247420 .ds-skel::after { animation: none; } }
|
|
1475
1508
|
|
|
1476
1509
|
/* File row — linear layout (icon · title · meta · actions) */
|
|
1477
1510
|
.ds-247420 .ds-file-row {
|
|
@@ -3104,6 +3137,158 @@
|
|
|
3104
3137
|
.ds-247420 .brand { font-size: var(--fs-tiny); }
|
|
3105
3138
|
}
|
|
3106
3139
|
|
|
3140
|
+
/* ----------------------------------------------------------------------------
|
|
3141
|
+
WorkspaceShell — Claude-Desktop / cowork three-column app shell.
|
|
3142
|
+
Columns: [ws-rail] [ws-sessions?] [ws-content] [ws-pane?]
|
|
3143
|
+
Collapse via .ws-rail-collapsed / .ws-pane-collapsed classes on .ws-shell.
|
|
3144
|
+
All sizing/colour from kit tokens; no hardcoded palette.
|
|
3145
|
+
---------------------------------------------------------------------------- */
|
|
3146
|
+
.ds-247420 .ws-shell {
|
|
3147
|
+
--ws-rail-w: 232px;
|
|
3148
|
+
--ws-rail-w-collapsed: 60px;
|
|
3149
|
+
--ws-sessions-w: 296px;
|
|
3150
|
+
--ws-pane-w: 320px;
|
|
3151
|
+
display: grid;
|
|
3152
|
+
grid-template-columns: var(--ws-rail-w) var(--ws-sessions-w) 1fr var(--ws-pane-w);
|
|
3153
|
+
grid-template-areas: "rail sessions content pane";
|
|
3154
|
+
height: 100%;
|
|
3155
|
+
min-height: 0;
|
|
3156
|
+
background: var(--bg);
|
|
3157
|
+
color: var(--fg);
|
|
3158
|
+
}
|
|
3159
|
+
.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
|
+
.ds-247420 .ws-shell.ws-no-pane.ws-no-sessions { grid-template-columns: var(--ws-rail-w) 1fr; grid-template-areas: "rail content"; }
|
|
3161
|
+
.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"; }
|
|
3162
|
+
.ds-247420 .ws-shell.ws-rail-collapsed { --ws-rail-w: var(--ws-rail-w-collapsed); }
|
|
3163
|
+
.ds-247420 .ws-shell.ws-pane-collapsed { --ws-pane-w: 0px; }
|
|
3164
|
+
|
|
3165
|
+
/* Rail (left nav) */
|
|
3166
|
+
.ds-247420 .ws-rail {
|
|
3167
|
+
grid-area: rail;
|
|
3168
|
+
position: relative;
|
|
3169
|
+
display: flex;
|
|
3170
|
+
flex-direction: column;
|
|
3171
|
+
min-height: 0;
|
|
3172
|
+
background: var(--bg-2);
|
|
3173
|
+
border-right: var(--bw-hair) solid var(--bg-3);
|
|
3174
|
+
overflow: hidden;
|
|
3175
|
+
transition: width var(--dur-base) var(--ease);
|
|
3176
|
+
}
|
|
3177
|
+
.ds-247420 .ws-rail-toggle {
|
|
3178
|
+
position: absolute; top: var(--space-2); right: var(--space-2);
|
|
3179
|
+
width: 36px; height: 36px;
|
|
3180
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
3181
|
+
background: transparent; border: none; color: var(--fg-2);
|
|
3182
|
+
border-radius: var(--r-1); cursor: pointer;
|
|
3183
|
+
}
|
|
3184
|
+
.ds-247420 .ws-rail-toggle:hover { background: var(--bg-3); color: var(--fg); }
|
|
3185
|
+
.ds-247420 .ws-rail-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3186
|
+
.ds-247420 .ws-rail-inner { display: flex; flex-direction: column; min-height: 0; flex: 1; padding: var(--space-3) var(--space-2); gap: var(--space-2); }
|
|
3187
|
+
.ds-247420 .ws-rail-head { display: flex; align-items: center; min-height: 36px; padding: 0 var(--space-2); }
|
|
3188
|
+
.ds-247420 .ws-rail-brand { font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-body); color: var(--fg); white-space: nowrap; overflow: hidden; }
|
|
3189
|
+
.ds-247420 .ws-rail-action {
|
|
3190
|
+
display: flex; align-items: center; gap: var(--space-2);
|
|
3191
|
+
padding: var(--space-2) var(--space-3); margin: var(--space-1) 0;
|
|
3192
|
+
background: var(--accent); color: var(--accent-fg, var(--bg));
|
|
3193
|
+
border: none; border-radius: var(--r-1); cursor: pointer;
|
|
3194
|
+
font-family: var(--ff-body); font-size: var(--fs-sm); font-weight: 600;
|
|
3195
|
+
min-height: 40px; white-space: nowrap; overflow: hidden;
|
|
3196
|
+
}
|
|
3197
|
+
.ds-247420 .ws-rail-action:hover { filter: brightness(1.08); }
|
|
3198
|
+
.ds-247420 .ws-rail-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3199
|
+
.ds-247420 .ws-rail-nav { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; flex: 1; min-height: 0; overflow-y: auto; }
|
|
3200
|
+
.ds-247420 .ws-rail-item {
|
|
3201
|
+
display: flex; align-items: center; gap: var(--space-2);
|
|
3202
|
+
width: 100%; padding: var(--space-2); min-height: 44px;
|
|
3203
|
+
background: transparent; border: none; color: var(--fg-2);
|
|
3204
|
+
border-radius: var(--r-1); cursor: pointer; text-align: left;
|
|
3205
|
+
font-family: var(--ff-body); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden;
|
|
3206
|
+
}
|
|
3207
|
+
.ds-247420 .ws-rail-item:hover { background: var(--bg-3); color: var(--fg); }
|
|
3208
|
+
.ds-247420 .ws-rail-item:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
3209
|
+
.ds-247420 .ws-rail-item.active { background: var(--accent-tint); color: var(--fg); box-shadow: inset 2px 0 0 var(--accent); }
|
|
3210
|
+
.ds-247420 .ws-rail-item-label { flex: 1; overflow: hidden; text-overflow: ellipsis; }
|
|
3211
|
+
.ds-247420 .ws-rail-item-count { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
3212
|
+
.ds-247420 .ws-rail-foot { margin-top: auto; padding-top: var(--space-2); border-top: var(--bw-hair) solid var(--bg-3); }
|
|
3213
|
+
|
|
3214
|
+
/* Collapsed rail: icon-only — hide text labels, center icons, drop toggle's far-right pin */
|
|
3215
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-brand,
|
|
3216
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-action-label,
|
|
3217
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-item-label,
|
|
3218
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-item-count { display: none; }
|
|
3219
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-item,
|
|
3220
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-action { justify-content: center; gap: 0; }
|
|
3221
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-head { justify-content: center; }
|
|
3222
|
+
|
|
3223
|
+
/* Sessions column */
|
|
3224
|
+
.ds-247420 .ws-sessions {
|
|
3225
|
+
grid-area: sessions;
|
|
3226
|
+
min-height: 0; display: flex; flex-direction: column;
|
|
3227
|
+
background: var(--bg); border-right: var(--bw-hair) solid var(--bg-3);
|
|
3228
|
+
overflow: hidden;
|
|
3229
|
+
}
|
|
3230
|
+
.ds-247420 .ws-no-sessions .ws-sessions { display: none; }
|
|
3231
|
+
|
|
3232
|
+
/* Content column */
|
|
3233
|
+
.ds-247420 .ws-content { grid-area: content; min-width: 0; min-height: 0; display: flex; flex-direction: column; }
|
|
3234
|
+
.ds-247420 .ws-crumb { flex: 0 0 auto; display: flex; align-items: center; gap: var(--space-1); border-bottom: var(--bw-hair) solid var(--bg-3); }
|
|
3235
|
+
.ds-247420 .ws-crumb-main { flex: 1 1 auto; min-width: 0; }
|
|
3236
|
+
.ds-247420 .ws-main { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
|
|
3237
|
+
.ds-247420 .ws-main:focus { outline: none; }
|
|
3238
|
+
|
|
3239
|
+
/* Right context pane */
|
|
3240
|
+
.ds-247420 .ws-pane {
|
|
3241
|
+
grid-area: pane; position: relative;
|
|
3242
|
+
min-height: 0; display: flex; flex-direction: column;
|
|
3243
|
+
background: var(--bg-2); border-left: var(--bw-hair) solid var(--bg-3);
|
|
3244
|
+
overflow: hidden; transition: width var(--dur-base) var(--ease);
|
|
3245
|
+
}
|
|
3246
|
+
.ds-247420 .ws-pane-collapsed .ws-pane { width: 0; border-left: none; }
|
|
3247
|
+
.ds-247420 .ws-pane-collapsed .ws-pane > :not(.ws-pane-toggle) { display: none; }
|
|
3248
|
+
.ds-247420 .ws-pane-toggle {
|
|
3249
|
+
position: absolute; top: var(--space-2); left: calc(-1 * var(--space-5));
|
|
3250
|
+
width: 28px; height: 28px;
|
|
3251
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
3252
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); color: var(--fg-2);
|
|
3253
|
+
border-radius: var(--r-1); cursor: pointer; z-index: 2;
|
|
3254
|
+
}
|
|
3255
|
+
.ds-247420 .ws-pane-toggle:hover { background: var(--bg-3); color: var(--fg); }
|
|
3256
|
+
.ds-247420 .ws-pane-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3257
|
+
|
|
3258
|
+
/* Responsive: below 900px collapse to a single content column; rail+sessions+pane
|
|
3259
|
+
become overlay drawers the host can toggle, or simply hide on mobile. We keep it
|
|
3260
|
+
honest: stack rail (icon row) over content, hide sessions+pane unless toggled. */
|
|
3261
|
+
@media (max-width: 900px) {
|
|
3262
|
+
.ds-247420 .ws-shell,
|
|
3263
|
+
.ds-247420 .ws-shell.ws-no-sessions,
|
|
3264
|
+
.ds-247420 .ws-shell.ws-no-pane,
|
|
3265
|
+
.ds-247420 .ws-shell.ws-no-pane.ws-no-sessions {
|
|
3266
|
+
grid-template-columns: 1fr;
|
|
3267
|
+
grid-template-areas: "content";
|
|
3268
|
+
}
|
|
3269
|
+
.ds-247420 .ws-rail { position: fixed; inset: 0 auto 0 0; width: var(--ws-rail-w-collapsed); z-index: 40; }
|
|
3270
|
+
.ds-247420 .ws-sessions { position: fixed; inset: 0 auto 0 var(--ws-rail-w-collapsed); width: min(var(--ws-sessions-w), 80vw); z-index: 42; transform: translateX(-110%); transition: transform var(--dur-base) var(--ease); }
|
|
3271
|
+
.ds-247420 .ws-shell.ws-sessions-open .ws-sessions { transform: translateX(0); }
|
|
3272
|
+
/* On mobile the pane is a drawer driven by .ws-pane-open (an explicit open
|
|
3273
|
+
intent), NOT by :not(.ws-pane-collapsed) - the desktop collapse default is
|
|
3274
|
+
"open" which would otherwise pop the pane over the thread on every load. */
|
|
3275
|
+
.ds-247420 .ws-pane { position: fixed; inset: 0 0 0 auto; width: min(var(--ws-pane-w), 85vw); z-index: 42; transform: translateX(110%); transition: transform var(--dur-base) var(--ease); }
|
|
3276
|
+
.ds-247420 .ws-shell.ws-pane-open .ws-pane { transform: translateX(0); }
|
|
3277
|
+
.ds-247420 .ws-content { grid-area: content; padding-left: var(--ws-rail-w-collapsed); }
|
|
3278
|
+
.ds-247420 .ws-rail-collapsed .ws-rail-item-label, .ds-247420 .ws-rail-collapsed .ws-rail-brand { display: none; }
|
|
3279
|
+
/* Tap-scrim behind an open drawer; dismiss on click. Hidden unless a drawer
|
|
3280
|
+
is open so it never blocks the content area on desktop. */
|
|
3281
|
+
.ds-247420 .ws-scrim { display: none; position: fixed; inset: 0; z-index: 41; background: color-mix(in srgb, var(--fg) 38%, transparent); }
|
|
3282
|
+
.ds-247420 .ws-shell.ws-sessions-open .ws-scrim, .ds-247420 .ws-shell.ws-pane-open .ws-scrim { display: block; }
|
|
3283
|
+
/* The mobile drawer-toggle affordances live in the crumb bar. */
|
|
3284
|
+
.ds-247420 .ws-drawer-toggle { display: inline-flex; }
|
|
3285
|
+
}
|
|
3286
|
+
/* Drawer toggles are mobile-only chrome; hidden on the desktop grid. */
|
|
3287
|
+
.ds-247420 .ws-drawer-toggle { display: none; align-items: center; justify-content: center; width: 40px; height: 40px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
|
|
3288
|
+
.ds-247420 .ws-drawer-toggle:hover { background: var(--bg-2); color: var(--fg); }
|
|
3289
|
+
.ds-247420 .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3290
|
+
.ds-247420 .ws-scrim { display: none; }
|
|
3291
|
+
|
|
3107
3292
|
/* community.css */
|
|
3108
3293
|
/* ============================================================
|
|
3109
3294
|
247420 design system — community surface (Discord-style chat)
|
|
@@ -4745,6 +4930,8 @@
|
|
|
4745
4930
|
}
|
|
4746
4931
|
.ds-247420 .agentchat-title { font-size: 1em; margin: 0; }
|
|
4747
4932
|
.ds-247420 .agentchat-sub { font-size: .85em; color: var(--fg-3); }
|
|
4933
|
+
/* Thread wrapper hosts the absolutely-positioned jump-to-latest button. */
|
|
4934
|
+
.ds-247420 .agentchat-thread-wrap { position: relative; flex: 1; min-height: 0; display: flex; flex-direction: column; }
|
|
4748
4935
|
.ds-247420 .agentchat-thread {
|
|
4749
4936
|
flex: 1;
|
|
4750
4937
|
min-height: 0;
|
|
@@ -4754,6 +4941,39 @@
|
|
|
4754
4941
|
gap: var(--space-2, 8px);
|
|
4755
4942
|
}
|
|
4756
4943
|
|
|
4944
|
+
/* Jump-to-latest: hidden until the thread scroll listener adds .show. */
|
|
4945
|
+
.ds-247420 .agentchat-jump {
|
|
4946
|
+
position: absolute; right: 16px; bottom: 12px; z-index: 3;
|
|
4947
|
+
display: none; align-items: center; gap: .35em;
|
|
4948
|
+
padding: .4em .8em; font: inherit; font-size: .8em; cursor: pointer;
|
|
4949
|
+
border-radius: 999px; border: var(--bw-hair) solid var(--rule);
|
|
4950
|
+
background: var(--bg-2); color: var(--fg-2, var(--fg));
|
|
4951
|
+
box-shadow: 0 2px 8px color-mix(in srgb, var(--fg) 14%, transparent);
|
|
4952
|
+
}
|
|
4953
|
+
.ds-247420 .agentchat-jump.show { display: inline-flex; }
|
|
4954
|
+
.ds-247420 .agentchat-jump:hover { background: var(--bg-3); }
|
|
4955
|
+
.ds-247420 .agentchat-jump:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
4956
|
+
|
|
4957
|
+
/* Streaming caret: a thin blinking bar at the live edge of an assistant turn. */
|
|
4958
|
+
.ds-247420 .chat-stream-caret {
|
|
4959
|
+
display: inline-block; width: 2px; height: 1.05em; margin-left: 1px;
|
|
4960
|
+
vertical-align: text-bottom; background: var(--accent, var(--fg));
|
|
4961
|
+
animation: chat-caret-blink 1s step-end infinite;
|
|
4962
|
+
}
|
|
4963
|
+
@keyframes chat-caret-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
|
|
4964
|
+
@media (prefers-reduced-motion: reduce) { .ds-247420 .chat-stream-caret { animation: none; opacity: .8; } }
|
|
4965
|
+
|
|
4966
|
+
/* Per-message hover-revealed action row (copy / retry / edit). */
|
|
4967
|
+
.ds-247420 .chat-msg-actions { display: flex; gap: 2px; margin-top: 3px; opacity: 0; transition: opacity var(--dur-snap, .12s) var(--ease, ease); }
|
|
4968
|
+
.ds-247420 .chat-msg:hover .chat-msg-actions, .ds-247420 .chat-msg:focus-within .chat-msg-actions { opacity: 1; }
|
|
4969
|
+
.ds-247420 .chat-msg-action {
|
|
4970
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
4971
|
+
width: 26px; height: 26px; padding: 0; cursor: pointer;
|
|
4972
|
+
border: none; border-radius: var(--r-1, 4px); background: none; color: var(--fg-3);
|
|
4973
|
+
}
|
|
4974
|
+
.ds-247420 .chat-msg-action:hover { background: var(--bg-2); color: var(--fg); }
|
|
4975
|
+
.ds-247420 .chat-msg-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
|
|
4976
|
+
|
|
4757
4977
|
/* Empty state: a fresh thread is an invitation, not a void. */
|
|
4758
4978
|
.ds-247420 .agentchat-empty {
|
|
4759
4979
|
margin: auto;
|
|
@@ -4828,6 +5048,105 @@
|
|
|
4828
5048
|
.ds-247420 .agentchat-controls { gap: .4em; }
|
|
4829
5049
|
}
|
|
4830
5050
|
|
|
5051
|
+
/* ----------------------------------------------------------------------------
|
|
5052
|
+
Global status disc — a CSS-drawn status indicator (no text glyph) usable
|
|
5053
|
+
outside .agentchat-status (session rows, dashboard cards). Tone via modifier.
|
|
5054
|
+
---------------------------------------------------------------------------- */
|
|
5055
|
+
.ds-247420 .status-dot-disc {
|
|
5056
|
+
display: inline-block; width: 8px; height: 8px; border-radius: 50%;
|
|
5057
|
+
background: var(--fg-3); flex: 0 0 auto;
|
|
5058
|
+
}
|
|
5059
|
+
.ds-247420 .status-dot-disc.status-dot-live { background: var(--green); }
|
|
5060
|
+
.ds-247420 .status-dot-disc.status-dot-error { background: var(--flame); }
|
|
5061
|
+
|
|
5062
|
+
/* ----------------------------------------------------------------------------
|
|
5063
|
+
ConversationList — left-rail "Chats" column.
|
|
5064
|
+
---------------------------------------------------------------------------- */
|
|
5065
|
+
.ds-247420 .ds-sessions { display: flex; flex-direction: column; min-height: 0; height: 100%; }
|
|
5066
|
+
.ds-247420 .ds-session-head { flex: 0 0 auto; display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); border-bottom: var(--bw-hair) solid var(--bg-3); }
|
|
5067
|
+
.ds-247420 .ds-session-new {
|
|
5068
|
+
display: flex; align-items: center; gap: var(--space-2); justify-content: center;
|
|
5069
|
+
padding: var(--space-2) var(--space-3); min-height: 44px;
|
|
5070
|
+
background: var(--accent); color: var(--accent-fg, var(--bg)); border: none;
|
|
5071
|
+
border-radius: var(--r-1); cursor: pointer; font-family: var(--ff-body);
|
|
5072
|
+
font-size: var(--fs-sm); font-weight: 600;
|
|
5073
|
+
}
|
|
5074
|
+
.ds-247420 .ds-session-new:hover { filter: brightness(1.08); }
|
|
5075
|
+
.ds-247420 .ds-session-new:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
5076
|
+
.ds-247420 .ds-session-search {
|
|
5077
|
+
width: 100%; padding: var(--space-2) var(--space-3); min-height: 44px;
|
|
5078
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); color: var(--fg);
|
|
5079
|
+
border-radius: var(--r-1); font-family: var(--ff-body); font-size: var(--fs-sm);
|
|
5080
|
+
}
|
|
5081
|
+
.ds-247420 .ds-session-search:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5082
|
+
.ds-247420 .ds-session-list, .ds-247420 .ds-session-groups { flex: 1; min-height: 0; overflow-y: auto; padding: var(--space-2); }
|
|
5083
|
+
/* Grouped rows (Today/Yesterday/...) lay out like the flat list; the section
|
|
5084
|
+
label sticks to the top of the scroll area for Claude-Desktop-style headers. */
|
|
5085
|
+
.ds-247420 .ds-session-group { display: flex; flex-direction: column; }
|
|
5086
|
+
.ds-247420 .ds-session-group-rows { display: flex; flex-direction: column; gap: 2px; }
|
|
5087
|
+
.ds-247420 .ds-session-group-label { position: sticky; top: 0; z-index: 1; background: var(--bg-1, var(--bg)); font-size: var(--fs-tiny); color: var(--fg-3); text-transform: uppercase; letter-spacing: .04em; padding: var(--space-2) var(--space-2) var(--space-1); }
|
|
5088
|
+
.ds-247420 .ds-session-row {
|
|
5089
|
+
position: relative; display: flex; align-items: center; gap: var(--space-2);
|
|
5090
|
+
width: 100%; padding: var(--space-2); min-height: 52px; margin-bottom: 2px;
|
|
5091
|
+
background: transparent; border: none; border-radius: var(--r-1);
|
|
5092
|
+
cursor: pointer; text-align: left; color: var(--fg);
|
|
5093
|
+
}
|
|
5094
|
+
.ds-247420 .ds-session-row:hover { background: var(--bg-2); }
|
|
5095
|
+
.ds-247420 .ds-session-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
5096
|
+
.ds-247420 .ds-session-row.active { background: var(--accent-tint); box-shadow: inset 2px 0 0 var(--accent); }
|
|
5097
|
+
.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
|
+
content: ''; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; border-radius: 3px;
|
|
5099
|
+
}
|
|
5100
|
+
.ds-247420 .ds-session-row.rail-green::before { background: var(--green); }
|
|
5101
|
+
.ds-247420 .ds-session-row.rail-purple::before { background: var(--purple, var(--accent)); }
|
|
5102
|
+
.ds-247420 .ds-session-row.rail-flame::before { background: var(--flame); }
|
|
5103
|
+
.ds-247420 .ds-session-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
|
|
5104
|
+
.ds-247420 .ds-session-title { font-size: var(--fs-sm); color: var(--fg); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
5105
|
+
.ds-247420 .ds-session-sub { font-size: var(--fs-tiny); color: var(--fg-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
5106
|
+
.ds-247420 .ds-session-meta { display: flex; align-items: center; gap: var(--space-2); flex: 0 0 auto; }
|
|
5107
|
+
.ds-247420 .ds-session-agent { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
5108
|
+
.ds-247420 .ds-session-unread { width: 8px; height: 8px; border-radius: 50%; background: var(--accent); display: inline-block; }
|
|
5109
|
+
.ds-247420 .ds-session-state { padding: var(--space-5) var(--space-3); text-align: center; color: var(--fg-3); font-size: var(--fs-sm); }
|
|
5110
|
+
.ds-247420 .ds-session-state-error { color: var(--flame); }
|
|
5111
|
+
|
|
5112
|
+
/* ----------------------------------------------------------------------------
|
|
5113
|
+
SessionDashboard — grid of live-session cards.
|
|
5114
|
+
---------------------------------------------------------------------------- */
|
|
5115
|
+
.ds-247420 .ds-dash { display: flex; flex-direction: column; min-height: 0; }
|
|
5116
|
+
.ds-247420 .ds-dash-header { flex: 0 0 auto; display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4) 0; }
|
|
5117
|
+
.ds-247420 .ds-dash-count { font-size: var(--fs-sm); color: var(--fg-2); font-weight: 600; }
|
|
5118
|
+
.ds-247420 .ds-dash-header .btn, .ds-247420 .ds-dash-header .btn-primary { margin-left: auto; }
|
|
5119
|
+
.ds-247420 .ds-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--space-3); padding: var(--space-4); }
|
|
5120
|
+
.ds-247420 .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); }
|
|
5121
|
+
.ds-247420 .ds-dash-card.is-error { border-color: var(--flame); }
|
|
5122
|
+
.ds-247420 .ds-dash-card-head { display: flex; align-items: center; gap: var(--space-2); }
|
|
5123
|
+
.ds-247420 .ds-dash-status { font-size: var(--fs-tiny); font-weight: 600; text-transform: uppercase; letter-spacing: .03em; }
|
|
5124
|
+
.ds-247420 .ds-dash-status.is-running { color: var(--green); }
|
|
5125
|
+
.ds-247420 .ds-dash-status.is-error { color: var(--flame); }
|
|
5126
|
+
.ds-247420 .ds-dash-agent { font-size: var(--fs-body); font-weight: 600; color: var(--fg); }
|
|
5127
|
+
.ds-247420 .ds-dash-model { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); margin-left: auto; }
|
|
5128
|
+
.ds-247420 .ds-dash-meta { display: flex; flex-direction: column; gap: 2px; }
|
|
5129
|
+
.ds-247420 .ds-dash-cwd { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
5130
|
+
.ds-247420 .ds-dash-stat { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-2); }
|
|
5131
|
+
.ds-247420 .ds-dash-activity { font-size: var(--fs-tiny); color: var(--fg-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
5132
|
+
.ds-247420 .ds-dash-actions { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-1); }
|
|
5133
|
+
.ds-247420 .ds-dash-state { padding: var(--space-6) var(--space-4); text-align: center; color: var(--fg-3); font-size: var(--fs-body); }
|
|
5134
|
+
.ds-247420 .ds-dash-state-error { color: var(--flame); }
|
|
5135
|
+
|
|
5136
|
+
@media (max-width: 640px) {
|
|
5137
|
+
.ds-247420 .ds-dash-grid { grid-template-columns: 1fr; padding: var(--space-3); }
|
|
5138
|
+
}
|
|
5139
|
+
|
|
5140
|
+
/* ----------------------------------------------------------------------------
|
|
5141
|
+
ContextPane — compact right-hand context panel for the chat surface.
|
|
5142
|
+
---------------------------------------------------------------------------- */
|
|
5143
|
+
.ds-247420 .ds-context { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-3); }
|
|
5144
|
+
.ds-247420 .ds-context .panel { background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-2); }
|
|
5145
|
+
.ds-247420 .ds-context .row { font-size: var(--fs-sm); }
|
|
5146
|
+
.ds-247420 .ds-context .row .meta { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-2); }
|
|
5147
|
+
.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
|
+
.ds-247420 .ds-context-actions { display: flex; gap: var(--space-2); }
|
|
5149
|
+
|
|
4831
5150
|
/* editor-primitives.css */
|
|
4832
5151
|
/* editor-primitives.css — chrome for in-engine editors, inspectors, IDEs,
|
|
4833
5152
|
debug HUDs. All rules under .ds-247420 scope (build prefixes). Tokens
|