Skip to content

Commit be736df

Browse files
committed
improvement(chat-client): added markdown support
1 parent 4540c41 commit be736df

File tree

4 files changed

+1394
-54
lines changed

4 files changed

+1394
-54
lines changed

sim/app/chat/[subdomain]/components/chat-client.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import { KeyboardEvent, useEffect, useMemo, useRef, useState } from 'react'
44
import { ArrowUp, Loader2, Lock, Mail } from 'lucide-react'
5+
import ReactMarkdown from 'react-markdown'
56
import { Button } from '@/components/ui/button'
67
import { Input } from '@/components/ui/input'
78
import { OTPInputForm } from '@/components/ui/input-otp-form'
@@ -30,6 +31,15 @@ interface ChatConfig {
3031
authType?: 'public' | 'password' | 'email'
3132
}
3233

34+
// Markdown renderer component with proper styling
35+
function MarkdownRenderer({ content }: { content: string }) {
36+
return (
37+
<div className="prose dark:prose-invert max-w-none text-base leading-relaxed [&>*]:text-base [&>*]:leading-relaxed text-[#0D0D0D] dark:text-gray-100 [&>*]:text-[#0D0D0D] [&>*]:dark:text-gray-100 [&>p]:my-1 [&>p+p]:mt-3 [&>ul]:my-1 [&>ol]:my-1 [&>h1]:mb-2 [&>h2]:mb-2 [&>h3]:mb-1">
38+
<ReactMarkdown>{content}</ReactMarkdown>
39+
</div>
40+
)
41+
}
42+
3343
// ChatGPT-style message component
3444
function ClientChatMessage({ message }: { message: ChatMessage }) {
3545
// Check if content is a JSON object
@@ -68,7 +78,7 @@ function ClientChatMessage({ message }: { message: ChatMessage }) {
6878
{isJsonObject ? (
6979
<pre>{JSON.stringify(message.content, null, 2)}</pre>
7080
) : (
71-
<span>{message.content}</span>
81+
<MarkdownRenderer content={message.content as string} />
7282
)}
7383
</div>
7484
</div>

0 commit comments

Comments
 (0)