import { useEffect, useState } from 'react' import api from '@/services/api' import type { KnowledgeBase } from '@/types' type Props = { isOpen: boolean onClose: () => void onSaved?: (kb: KnowledgeBase) => void | Promise knowledgeBase?: KnowledgeBase | null } type FormState = { title: string description: string } const emptyForm: FormState = { title: '', description: '' } export default function KnowledgeBaseFormModal({ isOpen, onClose, onSaved, knowledgeBase }: Props) { const [saving, setSaving] = useState(false) const [error, setError] = useState('') const [form, setForm] = useState(emptyForm) useEffect(() => { if (!isOpen) return setError('') if (knowledgeBase) { setForm({ title: knowledgeBase.title, description: knowledgeBase.description || '' }) } else { setForm(emptyForm) } }, [isOpen, knowledgeBase]) const submit = async (e: React.FormEvent) => { e.preventDefault() setSaving(true) setError('') try { if (knowledgeBase) { const { data } = await api.patch(`/knowledge-bases/${knowledgeBase.id}`, { title: form.title, description: form.description || null, }) await onSaved?.(data) } else { const { data } = await api.post('/knowledge-bases', { title: form.title, description: form.description || null, }) await onSaved?.(data) } onClose() } catch (err: any) { setError(err?.response?.data?.detail || 'Failed to save knowledge base') } finally { setSaving(false) } } if (!isOpen) return null return (
e.stopPropagation()}>

{knowledgeBase ? 'Edit Knowledge Base' : 'Create Knowledge Base'}