import { useState } from 'react' import { Modal } from '@/components/common/Modal' import { Button } from '@/components/ui/Button' import { Input } from '@/components/ui/Input' import { Textarea } from '@/components/ui/Textarea' interface CreateCategoryModalProps { isOpen: boolean onClose: () => void onSubmit: (data: { name: string; description: string }) => Promise isSaving?: boolean } export function CreateCategoryModal({ isOpen, onClose, onSubmit, isSaving = false }: CreateCategoryModalProps) { const [name, setName] = useState('') const [description, setDescription] = useState('') const [error, setError] = useState('') const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError('') if (!name.trim()) { setError('Category name is required') return } if (name.length > 100) { setError('Category name must be 100 characters or less') return } try { await onSubmit({ name: name.trim(), description: description.trim() }) setName('') setDescription('') } catch { setError('Failed to create category') } } const handleClose = () => { if (!isSaving) { setName('') setDescription('') setError('') onClose() } } return ( } >
{error && (
{error}
)}
setName(e.target.value)} disabled={isSaving} maxLength={100} placeholder="e.g., Network Troubleshooting" required />

{name.length}/100 characters