feat: add chat page layout with message list and bubble components

- Create /chat route with scrollable message list
- MessageBubble component with distinct user/assistant styles
- MessageList with auto-scroll-to-bottom on new messages
- Empty state display when no messages
- ChatMessage type definition in src/lib/types.ts
- Add browser globals to ESLint config for Svelte files

Closes #5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shahondin1624
2026-03-12 11:25:08 +01:00
parent f2daa9cef2
commit 6df4c396b9
10 changed files with 125 additions and 3 deletions

View File

@@ -0,0 +1,20 @@
<script lang="ts">
import type { ChatMessage } from '$lib/types';
let { message }: { message: ChatMessage } = $props();
const isUser = $derived(message.role === 'user');
</script>
<div class="flex {isUser ? 'justify-end' : 'justify-start'} mb-3">
<div
class="max-w-[75%] rounded-2xl px-4 py-2.5 {isUser
? 'bg-blue-600 text-white rounded-br-md'
: 'bg-gray-200 text-gray-900 rounded-bl-md'}"
>
<p class="text-sm whitespace-pre-wrap">{message.content}</p>
<time class="mt-1 block text-xs {isUser ? 'text-blue-200' : 'text-gray-500'}">
{message.timestamp.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}
</time>
</div>
</div>