Features¶
Routes¶
| Route | Page |
|---|---|
/ |
Pages/Home.razor |
/chat, /chat/{conversationId} |
Pages/Chat.razor -> renders ChatContainer |
Components¶
Under Components/ (~19 Razor files):
- Chat:
ChatContainer,ModelSelector - Conversations:
ConversationList,ConversationActions,ShareConversation - Messages:
MessageList,MessageActions,MarkdownRenderer - Input:
ChatInput - Settings:
ChatSettingsModal - Layout/Nav:
MainLayout,NavMenu,App,Routes,NotFoundPage - Loading skeletons:
ConversationListSkeleton,MessageListSkeleton - Accessibility:
ScreenReaderAnnouncements
Services (registered by AddAIChatServices())¶
| Interface | Implementation | Role |
|---|---|---|
IConversationService |
ConversationService |
Conversation CRUD/grouping |
IMessageService |
MessageService |
Message persistence |
IChatStateService |
ChatStateService |
UI/chat state |
IMockAIService |
MockAIService |
In-process simulated streaming AI |
IChatOrchestrator |
ChatOrchestrator |
Coordinates send/receive |
IKeyboardShortcutService, IScreenReaderService, LanguageService |
UX/accessibility/localization |
Mock AI¶
MockAIService generates pattern-based, streamed responses locally - there is no HTTP backend. Replace it with a real IChatClient/API integration when productionizing.
Markdown and theming¶
MarkdownRenderer uses Markdig. Styling is via ConnectSoft.Blazor.UIKit (1.0.163) with the chosen adapter (Flowbite default), Tailwind, and Flowbite JS. CSS builds from Styles/app.tailwind.css to wwwroot/css/app.css.