Skip to content

Commit b2ba305

Browse files
authored
feat: style improvements for agent chat (#3765)
Small styling updates for the agent chat for things that were annoying me. Signed-off-by: Lucas Pinheiro <lucas@superplane.com>
1 parent 8c18853 commit b2ba305

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

web_src/src/ui/BuildingBlocksSidebar/AiBuilderChatPanel.tsx

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { TimeAgo } from "@/components/TimeAgo";
22
import { Button } from "@/components/ui/button";
33
import { TabsContent } from "@/components/ui/tabs";
44
import { Textarea } from "@/components/ui/textarea";
5-
import { ArrowLeft, ArrowUp } from "lucide-react";
5+
import { Activity, ArrowLeft, ArrowUp, User } from "lucide-react";
66
import { useEffect, useRef } from "react";
77
import ReactMarkdown from "react-markdown";
88
import remarkBreaks from "remark-breaks";
@@ -363,23 +363,28 @@ function AiMessage({ message }: { message: AiBuilderMessage }) {
363363
const isRunningToolMessage = isToolMessage && message.toolStatus === "running";
364364

365365
let messageClassName = "";
366+
let wrapperClassName = "w-full";
366367

367368
if (message.role === "user") {
368369
messageClassName =
369-
"flex w-full items-start gap-2 rounded-md border border-slate-200/90 bg-slate-100 px-2 py-1.5 text-sm text-slate-800";
370+
"flex w-full items-start gap-2 rounded-md border border-slate-200/90 bg-slate-100 px-3 py-2.5 text-sm text-slate-800";
371+
wrapperClassName = "w-full py-1";
370372
} else if (isToolMessage) {
371-
messageClassName = `px-2 text-xs leading-relaxed text-gray-500 ${isRunningToolMessage ? "sp-ai-thinking" : ""}`;
373+
messageClassName = `flex items-start gap-2 px-2 text-xs leading-relaxed text-gray-500 ${isRunningToolMessage ? "sp-ai-thinking" : ""}`;
372374
} else {
373375
messageClassName = "px-2 text-sm text-gray-800";
374376
}
375377

376378
return (
377-
<div key={message.id} className="w-full">
379+
<div key={message.id} className={wrapperClassName}>
378380
{message.role === "user" ? (
379381
<div className={messageClassName}>
380-
<span className="shrink-0 select-none font-mono text-slate-500" aria-hidden="true">
381-
&gt;
382-
</span>
382+
<User className="mt-0.5 h-3.5 w-3.5 shrink-0 text-slate-500" aria-hidden="true" />
383+
<span className="min-w-0 whitespace-pre-wrap break-words">{message.content}</span>
384+
</div>
385+
) : isToolMessage ? (
386+
<div className={messageClassName}>
387+
<Activity className="mt-0.5 h-3.5 w-3.5 shrink-0 text-gray-400" aria-hidden="true" />
383388
<span className="min-w-0 whitespace-pre-wrap break-words">{message.content}</span>
384389
</div>
385390
) : (
@@ -393,7 +398,7 @@ function AiMessage({ message }: { message: AiBuilderMessage }) {
393398

394399
function AiMessageMarkdown({ content }: { content: string }) {
395400
return (
396-
<div className="max-w-none [&_p]:mb-2 [&_p:last-child]:mb-0 [&_ol]:mb-2 [&_ol]:ml-5 [&_ol]:list-decimal [&_ul]:mb-2 [&_ul]:ml-5 [&_ul]:list-disc [&_li]:mb-1 [&_code]:rounded [&_code]:bg-slate-100 [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-xs [&_pre]:my-2 [&_pre]:overflow-auto [&_pre]:rounded [&_pre]:bg-slate-100 [&_pre]:p-2 [&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_strong]:font-semibold">
401+
<div className="max-w-none text-slate-800 [&_h1]:mb-1.5 [&_h1]:mt-1 [&_h1]:text-lg [&_h1]:font-semibold [&_h1]:leading-tight [&_h1:first-child]:mt-0 [&_h2]:mb-1 [&_h2]:mt-1 [&_h2]:text-base [&_h2]:font-semibold [&_h2]:leading-tight [&_h2:first-child]:mt-0 [&_h3]:mb-1.5 [&_h3]:mt-2 [&_h3]:text-sm [&_h3]:font-semibold [&_h3]:leading-tight [&_h3:first-child]:mt-0 [&_h4]:mb-0.5 [&_h4]:mt-1 [&_h4]:text-sm [&_h4]:font-medium [&_h4]:leading-tight [&_h4:first-child]:mt-0 [&_p]:mb-2 [&_p]:leading-relaxed [&_p:last-child]:mb-0 [&_ol]:mb-2 [&_ol]:ml-5 [&_ol]:list-decimal [&_ul]:mb-2 [&_ul]:ml-5 [&_ul]:list-disc [&_li]:mb-1 [&_blockquote]:my-2 [&_blockquote]:border-l-2 [&_blockquote]:border-slate-300 [&_blockquote]:pl-3 [&_hr]:my-6 [&_hr]:border-slate-300 [&_code]:rounded [&_code]:bg-slate-100 [&_code]:px-1 [&_code]:py-0.5 [&_code]:text-xs [&_pre]:my-2 [&_pre]:overflow-auto [&_pre]:rounded [&_pre]:bg-slate-100 [&_pre]:p-2 [&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_a]:underline [&_a]:underline-offset-2 [&_a]:decoration-current">
397402
<ReactMarkdown
398403
remarkPlugins={[remarkGfm, remarkBreaks]}
399404
components={{

0 commit comments

Comments
 (0)