- Add markdown rendering with react-markdown and remark-gfm - Create ChatMessage component with code copy functionality - Add typing indicator animation during AI response - Create welcome screen for new users - Add Textarea component for multi-line input - Improve message styling with avatars and hover actions - Add Gateway connection status awareness - Add prose styling for markdown content
3.4 KiB
3.4 KiB
Commit 8: Chat Interface
Summary
Enhance the chat interface with markdown rendering, typing indicators, welcome screen, and improved user experience for conversations with the AI assistant.
Changes
React Renderer
src/pages/Chat/index.tsx
Complete rewrite with enhanced features:
New Components:
ChatMessage- Individual message with markdown supportTypingIndicator- Animated dots during AI responseWelcomeScreen- Onboarding screen for new users
Features:
- Markdown rendering with react-markdown and remark-gfm
- Code syntax highlighting with copy button
- Auto-resizing textarea input
- Gateway connection status awareness
- Tool call status badges
- Copy message content button
- Shift+Enter for new lines
UI Improvements:
- Gradient avatar for AI assistant
- Rounded message bubbles
- Hover actions (copy, etc.)
- Responsive prose styling
- Custom code block display
src/components/ui/textarea.tsx (New)
Textarea component based on shadcn/ui:
- Auto-resize support
- Focus ring styling
- Disabled state
src/styles/globals.css
Added prose styling:
- Markdown list formatting
- Blockquote styling
- Table formatting
- Code block margins
- Typing indicator animation
Dependencies
package.json
New dependencies:
react-markdown@10.1.0- Markdown renderingremark-gfm@4.0.1- GitHub Flavored Markdown support
Technical Details
Message Rendering Flow
Message Content
|
v
Is User?
|
┌───┴───┐
Yes No
| |
v v
Plain ReactMarkdown
Text |
v
remark-gfm
|
v
Custom Components
(code, links, etc.)
Markdown Components
| Element | Custom Handling |
|---|---|
code |
Inline vs block detection, syntax highlighting label, copy button |
a |
External link (new tab), primary color styling |
pre |
Background styling, overflow scroll |
| Lists | Proper indentation and spacing |
| Tables | Border collapse, header background |
| Blockquotes | Left border, muted color |
Typing Indicator Animation
@keyframes bounce {
0%, 60%, 100% { transform: translateY(0); }
30% { transform: translateY(-4px); }
}
/* Staggered delay for dots */
.dot-1 { animation-delay: 0ms; }
.dot-2 { animation-delay: 150ms; }
.dot-3 { animation-delay: 300ms; }
Input Handling
Key Combinations:
Enter- Send messageShift+Enter- New line- Auto-resize up to 200px max height
State Management:
- Textarea value tracked in local state
- Height recalculated on content change
- Focus maintained after send
Gateway Integration
Connection Awareness:
- Warning banner when Gateway offline
- Input disabled without connection
- Fetch history only when connected
- Error display for failed messages
Welcome Screen Features
Quick start cards showing:
- "Ask Questions" - General Q&A capability
- "Creative Tasks" - Writing and brainstorming
Gradient branding with ClawX logo.
UI/UX Considerations
- Message Alignment: User messages right-aligned, AI left-aligned
- Avatar Design: Gradient for AI, solid for user
- Hover Actions: Progressive disclosure of copy buttons
- Feedback: Toast on code copy, visual state for copied
- Loading States: Typing indicator during AI response
- Error Handling: Inline error display with icon
Version
v0.1.0-alpha (incremental)