feat: Reply/Zitat-Feature für Chat-Nachrichten
- Reply-Button (Hover) auf jeder User/Assistant-Nachricht - Reply-Preview-Leiste über dem Input-Feld (mit Timestamp, Rolle, Text-Preview) - Beim Senden: Zitat als Kontext-Block vorangestellt (> [Zitat: HH:MM, Role]:) - User-Nachrichten parsen Zitat-Blöcke als visuelle Quote-Elemente (blaue Borderlinie) - Timestamp-basierte Referenzierung (HH:MM oder DD.MM. HH:MM) - clearReply() bei Chat-Clear, Navigation und Destroy
This commit is contained in:
1 parent
7c0e5d180a
commit
57b4b5931b
6 files changed
+224
-6
No files matched your search
@@ -262,6 +262,97 @@
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
/* Reply Button */
|
||||
|
||||
.msg {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.msg-reply-btn {
|
||||
position: absolute;
|
||||
top: var(--badge-spacing);
|
||||
right: var(--badge-spacing);
|
||||
opacity: 0;
|
||||
transition: opacity .15s;
|
||||
padding: .15em .35em;
|
||||
font-size: var(--font-size);
|
||||
background: var(--f2-bg);
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.msg:hover .msg-reply-btn {
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
|
||||
.msg-reply-btn:hover {
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
/* Reply Quote in User Bubble */
|
||||
|
||||
.reply-quote {
|
||||
border-left: 3px solid var(--primary);
|
||||
padding: var(--badge-padding);
|
||||
padding-left: var(--box-spacing);
|
||||
margin-bottom: var(--box-spacing);
|
||||
opacity: var(--semi-transparent);
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
.reply-quote-meta {
|
||||
font-size: var(--font-size);
|
||||
margin-bottom: .2em;
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.reply-quote-text {
|
||||
font-size: var(--font-size);
|
||||
}
|
||||
|
||||
/* Reply Preview */
|
||||
|
||||
.reply-preview {
|
||||
padding: var(--box-padding);
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
.reply-preview:not([hidden]) {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.reply-preview-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: var(--badge-padding);
|
||||
gap: var(--badge-spacing);
|
||||
background: var(--f2-bg);
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
border-radius: var(--border-radius);
|
||||
border-left: 3px solid var(--primary);
|
||||
overflow: hidden;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.reply-icon {
|
||||
flex-shrink: 0;
|
||||
color: var(--primary);
|
||||
}
|
||||
|
||||
.reply-meta {
|
||||
flex-shrink: 0;
|
||||
font-weight: bold;
|
||||
font-size: var(--font-size);
|
||||
}
|
||||
|
||||
.reply-text {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
|
||||
/* Workspace Refs */
|
||||
|
||||
.ref-preview {
|
||||
|
||||
Reference in new issue
Block a user