| name | ui-embed |
| description | Embed the chatbot UI inside Docusaurus and connect it to the FastAPI RAG backend. Use when building chat components, handling streaming responses, or integrating chat widgets into MDX pages. |
UI Embed Skill
Instructions
Build component
- Create React chat panel (
ChatbotPanel.tsx) with:- Message list
- Input field
- Mode toggle (RAG vs Selected Text)
- Source list display
- Handle streaming responses (EventSource/fetch reader)
- Include loading and error UI states
- Create React chat panel (
API client
- Create fetch helpers for
/queryand/query/selected - Include page metadata (module/week/title) for logging
- Debounce/trim inputs; enforce max length
- Create fetch helpers for
Integration
- Add to
src/theme/Layoutor dedicatedChatpage - Optionally show floating button
- Provide MDX shortcode to drop chat in specific chapters
- Add to
UX and accessibility
- Basic console logging for failures
- Friendly fallback messages
- Focus management, keyboard submit
- Readable contrast
Examples
// ChatbotPanel.tsx
import React, { useState } from 'react';
export function ChatbotPanel({ apiUrl }: { apiUrl: string }) {
const [messages, setMessages] = useState([]);
const [input, setInput] = useState('');
const [mode, setMode] = useState<'rag' | 'selected'>('rag');
// ... implementation
}
{/* In any MDX page */}
import { ChatbotPanel } from '@site/src/components/ChatbotPanel';
<ChatbotPanel apiUrl={process.env.API_URL} />
Definition of Done
- Widget renders in Docusaurus dev build; can query backend
- Selected-text path sends provided text and returns grounded answer
- Error/loading states visible; minimal styling but responsive
- Integration steps documented for future pages