tweak(ui): allow full-width user message meta
Moves the user message meta row out of the bubble width constraints and truncates long metadata while keeping the timestamp visible with consistent middot spacing.
This commit is contained in:
@@ -120,6 +120,7 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: flex-end;
|
justify-content: flex-end;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
|
width: 100%;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
transition: opacity 0.15s ease;
|
transition: opacity 0.15s ease;
|
||||||
@@ -134,6 +135,27 @@
|
|||||||
[data-slot="user-message-meta"] {
|
[data-slot="user-message-meta"] {
|
||||||
user-select: none;
|
user-select: none;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
flex: 1 1 auto;
|
||||||
|
min-width: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-slot="user-message-meta-wrap"] {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
min-width: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-slot="user-message-meta-tail"] {
|
||||||
|
user-select: none;
|
||||||
|
flex: 0 0 auto;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
[data-slot="user-message-copy-wrapper"][data-interrupted] {
|
[data-slot="user-message-copy-wrapper"][data-interrupted] {
|
||||||
|
|||||||
@@ -560,16 +560,15 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
|
|||||||
return `${hour12}:${minute} ${hours < 12 ? "AM" : "PM"}`
|
return `${hour12}:${minute} ${hours < 12 ? "AM" : "PM"}`
|
||||||
})
|
})
|
||||||
|
|
||||||
const meta = createMemo(() => {
|
const metaHead = createMemo(() => {
|
||||||
const agent = props.message.agent
|
const agent = props.message.agent
|
||||||
const items = [
|
const items = [agent ? agent[0]?.toUpperCase() + agent.slice(1) : "", provider(), model()]
|
||||||
agent ? agent[0]?.toUpperCase() + agent.slice(1) : "",
|
return items.filter((x) => !!x).join("\u00A0\u00B7\u00A0")
|
||||||
provider(),
|
})
|
||||||
model(),
|
|
||||||
stamp(),
|
const metaTail = createMemo(() => {
|
||||||
props.interrupted ? i18n.t("ui.message.interrupted") : "",
|
const items = [stamp(), props.interrupted ? i18n.t("ui.message.interrupted") : ""]
|
||||||
]
|
return items.filter((x) => !!x).join("\u00A0\u00B7\u00A0")
|
||||||
return items.filter((x) => !!x).join(" \u00B7 ")
|
|
||||||
})
|
})
|
||||||
|
|
||||||
const openImagePreview = (url: string, alt?: string) => {
|
const openImagePreview = (url: string, alt?: string) => {
|
||||||
@@ -619,14 +618,30 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
|
|||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
<Show when={text()}>
|
<Show when={text()}>
|
||||||
<div data-slot="user-message-body">
|
<>
|
||||||
<div data-slot="user-message-text">
|
<div data-slot="user-message-body">
|
||||||
<HighlightedText text={text()} references={inlineFiles()} agents={agents()} />
|
<div data-slot="user-message-text">
|
||||||
|
<HighlightedText text={text()} references={inlineFiles()} agents={agents()} />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-slot="user-message-copy-wrapper" data-interrupted={props.interrupted ? "" : undefined}>
|
<div data-slot="user-message-copy-wrapper" data-interrupted={props.interrupted ? "" : undefined}>
|
||||||
<Show when={meta()}>
|
<Show when={metaHead() || metaTail()}>
|
||||||
<span data-slot="user-message-meta" class="text-12-regular text-text-weak cursor-default">
|
<span data-slot="user-message-meta-wrap">
|
||||||
{meta()}
|
<Show when={metaHead()}>
|
||||||
|
<span data-slot="user-message-meta" class="text-12-regular text-text-weak cursor-default">
|
||||||
|
{metaHead()}
|
||||||
|
</span>
|
||||||
|
</Show>
|
||||||
|
<Show when={metaHead() && metaTail()}>
|
||||||
|
<span data-slot="user-message-meta-sep" class="text-12-regular text-text-weak cursor-default">
|
||||||
|
{"\u00A0\u00B7\u00A0"}
|
||||||
|
</span>
|
||||||
|
</Show>
|
||||||
|
<Show when={metaTail()}>
|
||||||
|
<span data-slot="user-message-meta-tail" class="text-12-regular text-text-weak cursor-default">
|
||||||
|
{metaTail()}
|
||||||
|
</span>
|
||||||
|
</Show>
|
||||||
</span>
|
</span>
|
||||||
</Show>
|
</Show>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
@@ -647,7 +662,7 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
|
|||||||
/>
|
/>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</>
|
||||||
</Show>
|
</Show>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user