Skip to content

Commit 1d78100

Browse files
committed
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.
1 parent 57a5d5f commit 1d78100

2 files changed

Lines changed: 53 additions & 16 deletions

File tree

packages/ui/src/components/message-part.css

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@
120120
align-items: center;
121121
justify-content: flex-end;
122122
gap: 10px;
123+
width: 100%;
123124
opacity: 0;
124125
pointer-events: none;
125126
transition: opacity 0.15s ease;
@@ -134,6 +135,27 @@
134135
[data-slot="user-message-meta"] {
135136
user-select: none;
136137
text-align: right;
138+
flex: 1 1 auto;
139+
min-width: 0;
140+
overflow: hidden;
141+
text-overflow: ellipsis;
142+
white-space: nowrap;
143+
}
144+
145+
[data-slot="user-message-meta-wrap"] {
146+
flex: 1 1 auto;
147+
min-width: 0;
148+
display: flex;
149+
align-items: center;
150+
justify-content: flex-end;
151+
overflow: hidden;
152+
}
153+
154+
[data-slot="user-message-meta-tail"] {
155+
user-select: none;
156+
flex: 0 0 auto;
157+
white-space: nowrap;
158+
text-align: right;
137159
}
138160

139161
[data-slot="user-message-copy-wrapper"][data-interrupted] {

packages/ui/src/components/message-part.tsx

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -560,16 +560,15 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
560560
return `${hour12}:${minute} ${hours < 12 ? "AM" : "PM"}`
561561
})
562562

563-
const meta = createMemo(() => {
563+
const metaHead = createMemo(() => {
564564
const agent = props.message.agent
565-
const items = [
566-
agent ? agent[0]?.toUpperCase() + agent.slice(1) : "",
567-
provider(),
568-
model(),
569-
stamp(),
570-
props.interrupted ? i18n.t("ui.message.interrupted") : "",
571-
]
572-
return items.filter((x) => !!x).join(" \u00B7 ")
565+
const items = [agent ? agent[0]?.toUpperCase() + agent.slice(1) : "", provider(), model()]
566+
return items.filter((x) => !!x).join("\u00A0\u00B7\u00A0")
567+
})
568+
569+
const metaTail = createMemo(() => {
570+
const items = [stamp(), props.interrupted ? i18n.t("ui.message.interrupted") : ""]
571+
return items.filter((x) => !!x).join("\u00A0\u00B7\u00A0")
573572
})
574573

575574
const openImagePreview = (url: string, alt?: string) => {
@@ -619,14 +618,30 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
619618
</div>
620619
</Show>
621620
<Show when={text()}>
622-
<div data-slot="user-message-body">
623-
<div data-slot="user-message-text">
624-
<HighlightedText text={text()} references={inlineFiles()} agents={agents()} />
621+
<>
622+
<div data-slot="user-message-body">
623+
<div data-slot="user-message-text">
624+
<HighlightedText text={text()} references={inlineFiles()} agents={agents()} />
625+
</div>
625626
</div>
626627
<div data-slot="user-message-copy-wrapper" data-interrupted={props.interrupted ? "" : undefined}>
627-
<Show when={meta()}>
628-
<span data-slot="user-message-meta" class="text-12-regular text-text-weak cursor-default">
629-
{meta()}
628+
<Show when={metaHead() || metaTail()}>
629+
<span data-slot="user-message-meta-wrap">
630+
<Show when={metaHead()}>
631+
<span data-slot="user-message-meta" class="text-12-regular text-text-weak cursor-default">
632+
{metaHead()}
633+
</span>
634+
</Show>
635+
<Show when={metaHead() && metaTail()}>
636+
<span data-slot="user-message-meta-sep" class="text-12-regular text-text-weak cursor-default">
637+
{"\u00A0\u00B7\u00A0"}
638+
</span>
639+
</Show>
640+
<Show when={metaTail()}>
641+
<span data-slot="user-message-meta-tail" class="text-12-regular text-text-weak cursor-default">
642+
{metaTail()}
643+
</span>
644+
</Show>
630645
</span>
631646
</Show>
632647
<Tooltip
@@ -647,7 +662,7 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
647662
/>
648663
</Tooltip>
649664
</div>
650-
</div>
665+
</>
651666
</Show>
652667
</div>
653668
)

0 commit comments

Comments
 (0)