Chat: Usage-Badge-Overlay mit Key-Switch-Modal
- Usage-Badge oben zentriert im Chat (nur Admin) - Zeigt Sitzung/Woche-Balken des aktiven API-Keys - Blendet bei Scroll-Up aus, bei Scroll-Down ein - Klick auf Badge öffnet Key-Switch-Modal (via _createModal) - Ganze Row klickbar für Key-Wechsel - Refresh-Button neben Badge für manuellen Key-Check - Badge aktualisiert sich automatisch bei neuen Nachrichten (pollHistory) - Cleanup in destroy()
This commit is contained in:
1 parent
d33c1c370c
commit
3ec9ebba45
4 files changed
+274
No files matched your search
@@ -1,5 +1,52 @@
|
||||
.chat-page .page-content {
|
||||
align-items: stretch;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Usage Badge Overlay */
|
||||
|
||||
.chat-usage-overlay {
|
||||
position: absolute;
|
||||
top: var(--page-spacing);
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
z-index: 50;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: calc(var(--badge-spacing) / 2);
|
||||
opacity: 1;
|
||||
transition: opacity var(--transition-duration), transform var(--transition-duration);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.chat-usage-overlay[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.chat-usage-overlay.hidden {
|
||||
opacity: 0;
|
||||
transform: translateX(-50%) translateY(-1em);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.chat-usage-overlay .usage-badge {
|
||||
margin-top: 0;
|
||||
background: var(--chat-bg);
|
||||
border-color: var(--f3-border);
|
||||
}
|
||||
|
||||
.chat-usage-overlay .chat-usage-check {
|
||||
background: var(--chat-bg);
|
||||
border: var(--border-width) solid var(--f3-border);
|
||||
border-radius: var(--border-radius);
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.chat-usage-overlay .chat-usage-check:hover {
|
||||
background: var(--f2-bg);
|
||||
}
|
||||
|
||||
#chat {
|
||||
@@ -1328,3 +1375,41 @@
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* ── Key Switch Modal ── */
|
||||
|
||||
.key-switch-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.key-switch-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--badge-spacing);
|
||||
padding: var(--badge-padding);
|
||||
border: var(--border-width) solid var(--f3-border);
|
||||
border-radius: var(--border-radius);
|
||||
background: var(--f3-bg);
|
||||
}
|
||||
|
||||
.key-switch-row.active {
|
||||
border-color: var(--primary);
|
||||
background: rgb(from var(--primary) r g b / .2);
|
||||
}
|
||||
|
||||
.key-switch-info {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.key-switch-name {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.key-switch-meta {
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
Reference in new issue
Block a user