One profile picker for both surfaces, and open where you left off
This commit is contained in:
@@ -529,9 +529,9 @@ body.vv-fullscreen #displaybox { padding-left: 1rem !important; padding-top: .5r
|
||||
#vv-ai-dock { border: 1px solid #262626; border-radius: 6px; background: #0e0e0e;
|
||||
margin-top: 6px; flex-shrink: 0; }
|
||||
#vv-ai-dock-bar { display: flex; align-items: center; gap: 7px; padding: 6px 8px; }
|
||||
#vv-ai-dock-chip { flex-shrink: 0; font-size: 10px; color: #5a7a8a; background: #12191d;
|
||||
border: 1px solid #24343d; border-radius: 3px; padding: 2px 7px;
|
||||
white-space: nowrap; max-width: 40%; overflow: hidden; text-overflow: ellipsis; }
|
||||
#vv-ai-dock-chip { white-space: nowrap; max-width: 240px; overflow: hidden;
|
||||
text-overflow: ellipsis; }
|
||||
/* The button around it is .vv-ai-chip and carries the colour, border and padding. */
|
||||
.vv-ai-chip-flash { animation: vvAiChipFlash .9s ease-out 2; }
|
||||
@keyframes vvAiChipFlash { 0%,100% { background:#12191d; color:#5a7a8a; }
|
||||
50% { background:#2a2312; color:#d8b25a; } }
|
||||
@@ -1066,3 +1066,37 @@ code.vv-unknown-var { color: #ff9800; background: #1f130d; }
|
||||
.vv-script-args::placeholder { color: #3a3a3a; }
|
||||
.vv-rsync-save-btn { background: #1a2e1a; border-color: #2a4a2a; color: #6aaa6a; }
|
||||
.vv-rsync-save-btn:hover { background: #22382a; }
|
||||
|
||||
/* ── AI profile picker ────────────────────────────────────────────────────────
|
||||
Global rather than emitted with the chat widget, because both surfaces that show it are
|
||||
styled differently in every other respect: the Monitor card renders a full transcript from
|
||||
include/ai_chat.php, the Scheduler dock renders its own one-line bar and loads none of that
|
||||
stylesheet. The picker is the one control they share, so it lives where .vv-ai-dock-* already
|
||||
does instead of being emitted twice. */
|
||||
/* ── Profile picker ─────────────────────────────────────────────────────── */
|
||||
/* The chip borrows the Scheduler dock's language deliberately — same muted blue, same weight,
|
||||
same 10px — so the two surfaces read as one control that happens to appear in two places. */
|
||||
.vv-ai-profiles { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
|
||||
.vv-ai-picker { position:relative; flex-shrink:0; }
|
||||
.vv-ai-chip { display:inline-flex; align-items:center; gap:5px; font-size:10px; color:#5a7a8a;
|
||||
background:#12191d; border:1px solid #24343d; border-radius:3px; padding:3px 8px;
|
||||
cursor:pointer; font-family:inherit; white-space:nowrap; }
|
||||
.vv-ai-chip:hover { color:#8fb0c4; border-color:#2d4a6a; }
|
||||
.vv-ai-chip-c { color:#3a5a6a; font-size:8px; }
|
||||
.vv-ai-picker.open .vv-ai-chip { color:#8fb0c4; border-color:#2d4a6a; }
|
||||
.vv-ai-picker.open .vv-ai-chip-c { transform:rotate(180deg); }
|
||||
|
||||
.vv-ai-menu { display:none; position:absolute; top:calc(100% + 4px); left:0; z-index:60;
|
||||
min-width:250px; background:#0e0e0e; border:1px solid #2a2a2a; border-radius:5px;
|
||||
box-shadow:0 6px 18px rgba(0,0,0,.55); overflow:hidden; }
|
||||
.vv-ai-picker.open .vv-ai-menu { display:block; }
|
||||
.vv-ai-opt { display:block; width:100%; text-align:left; background:none; border:none;
|
||||
border-bottom:1px solid #1a1a1a; padding:7px 10px; cursor:pointer;
|
||||
font-family:inherit; }
|
||||
.vv-ai-opt:last-child { border-bottom:none; }
|
||||
.vv-ai-opt:hover { background:#152238; }
|
||||
.vv-ai-opt.active { background:#12191d; }
|
||||
.vv-ai-opt.active .vv-ai-opt-l { color:#9bd; }
|
||||
.vv-ai-opt-l { display:block; font-size:11px; color:#b8b8b8; }
|
||||
.vv-ai-opt-h { display:block; font-size:10px; color:#4a4a4a; line-height:1.4; margin-top:2px; }
|
||||
.vv-ai-prof-hint { font-size:10px; color:#4a4a4a; flex:1; min-width:150px; }
|
||||
|
||||
Reference in New Issue
Block a user