From 8932c3d502e800094c17f03d4eaaf7f1a8d6f04c Mon Sep 17 00:00:00 2001 From: Mohammad Yaseen Date: Wed, 24 Dec 2025 11:05:39 +0530 Subject: [PATCH] added knowledge base --- .../ui/configure-knowledge-base-dialog.tsx | 131 ++++++++++++++++++ src/pages/agent-create.tsx | 17 ++- 2 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 src/components/ui/configure-knowledge-base-dialog.tsx diff --git a/src/components/ui/configure-knowledge-base-dialog.tsx b/src/components/ui/configure-knowledge-base-dialog.tsx new file mode 100644 index 0000000..fa35a67 --- /dev/null +++ b/src/components/ui/configure-knowledge-base-dialog.tsx @@ -0,0 +1,131 @@ +/** + * Configure Knowledge Base Dialog Component + * @description Dialog for managing knowledge base collections + */ + +import { useEscapeKey, useBodyScrollLock } from '@/hooks'; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogClose, +} from './dialog'; + +/** + * ConfigureKnowledgeBaseDialog component props + */ +interface ConfigureKnowledgeBaseDialogProps { + /** Whether the dialog is open */ + open: boolean; + /** Callback when dialog open state changes */ + onOpenChange: (open: boolean) => void; + /** Callback when Add Knowledge Base button is clicked */ + onAddKnowledgeBase?: () => void; +} + +/** + * ConfigureKnowledgeBaseDialog component + * @description Modal dialog for managing knowledge base collections with empty state + * @param props - Component props + * @returns {JSX.Element} ConfigureKnowledgeBaseDialog element + */ +export function ConfigureKnowledgeBaseDialog({ + open, + onOpenChange, + onAddKnowledgeBase, +}: ConfigureKnowledgeBaseDialogProps): JSX.Element { + useEscapeKey(() => onOpenChange(false), open); + useBodyScrollLock(open); + + /** + * Handle Add Knowledge Base button click + * @description Triggers the onAddKnowledgeBase callback and closes dialog + */ + const handleAddKnowledgeBase = (): void => { + if (onAddKnowledgeBase) { + onAddKnowledgeBase(); + } + onOpenChange(false); + }; + + /** + * Handle keyboard events on Add Knowledge Base button + * @description Handles Enter and Space key presses + * @param e - Keyboard event + */ + const handleKeyDown = (e: React.KeyboardEvent): void => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + handleAddKnowledgeBase(); + } + }; + + // Icon from Figma design - database icon with exclamation + const emptyStateIcon = 'https://www.figma.com/api/mcp/asset/31344752-2e10-42c5-9678-5d2cb0b3dadb'; + + return ( + + + +
+ + Add Knowledge Base + + + Manage your document collections and knowledge sources + +
+ onOpenChange(false)} /> +
+ +
+
+ {/* Empty State Content */} +
+
+ {/* Database Icon */} +
+ Database icon +
+ + {/* Empty State Messages */} +
+
+

+ No knowledge bases found +

+
+

+ Get started by adding your first knowledge base +

+
+
+
+ + {/* Add Knowledge Base Button */} +
+ +
+
+
+
+
+ ); +} + diff --git a/src/pages/agent-create.tsx b/src/pages/agent-create.tsx index 101946b..b58d342 100644 --- a/src/pages/agent-create.tsx +++ b/src/pages/agent-create.tsx @@ -4,6 +4,7 @@ import { Info, ChevronDown } from 'lucide-react'; import { APP_PATHS } from '@/routes'; import { AddToolDialog } from '@/components/ui/add-tool-dialog'; import { ConfigureMemoryDialog } from '@/components/ui/configure-memory-dialog'; +import { ConfigureKnowledgeBaseDialog } from '@/components/ui/configure-knowledge-base-dialog'; import { ToolChip } from '@/components/ui/tool-chip'; import type { Tool } from '@/types'; @@ -39,6 +40,7 @@ export function AgentCreatePage(): JSX.Element { const [enableMemory, setEnableMemory] = useState(true); const [isToolDialogOpen, setIsToolDialogOpen] = useState(false); const [isMemoryDialogOpen, setIsMemoryDialogOpen] = useState(false); + const [isKnowledgeBaseDialogOpen, setIsKnowledgeBaseDialogOpen] = useState(false); const [memoryValue, setMemoryValue] = useState(2); const [editingTool, setEditingTool] = useState(null); const [tools, setTools] = useState([ @@ -250,7 +252,10 @@ export function AgentCreatePage(): JSX.Element { {enableKb && (
- @@ -382,6 +387,16 @@ export function AgentCreatePage(): JSX.Element { initialValue={memoryValue} onSave={setMemoryValue} /> + + {/* Configure Knowledge Base Dialog */} + { + // Handle add knowledge base action + console.log('Add Knowledge Base clicked'); + }} + />
); }