import { useState, useId } from 'react' import { X, Plus, Trash2, Loader2, AlertCircle } from 'lucide-react' import { useCreateFeature } from '../hooks/useProjects' interface Step { id: string value: string } interface AddFeatureFormProps { projectName: string onClose: () => void } export function AddFeatureForm({ projectName, onClose }: AddFeatureFormProps) { const formId = useId() const [category, setCategory] = useState('') const [name, setName] = useState('') const [description, setDescription] = useState('') const [priority, setPriority] = useState('') const [steps, setSteps] = useState([{ id: `${formId}-step-0`, value: '' }]) const [error, setError] = useState(null) const [stepCounter, setStepCounter] = useState(1) const createFeature = useCreateFeature(projectName) const handleAddStep = () => { setSteps([...steps, { id: `${formId}-step-${stepCounter}`, value: '' }]) setStepCounter(stepCounter + 1) } const handleRemoveStep = (id: string) => { setSteps(steps.filter(step => step.id !== id)) } const handleStepChange = (id: string, value: string) => { setSteps(steps.map(step => step.id === id ? { ...step, value } : step )) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError(null) // Filter out empty steps const filteredSteps = steps .map(s => s.value.trim()) .filter(s => s.length > 0) try { await createFeature.mutateAsync({ category: category.trim(), name: name.trim(), description: description.trim(), steps: filteredSteps, priority: priority ? parseInt(priority, 10) : undefined, }) onClose() } catch (err) { setError(err instanceof Error ? err.message : 'Failed to create feature') } } const isValid = category.trim() && name.trim() && description.trim() return (
e.stopPropagation()} > {/* Header */}

Add Feature

{/* Form */}
{/* Error Message */} {error && (
{error}
)} {/* Category & Priority Row */}
setCategory(e.target.value)} placeholder="e.g., Authentication, UI, API" className="neo-input" required />
setPriority(e.target.value)} placeholder="Auto" min="1" className="neo-input" />
{/* Name */}
setName(e.target.value)} placeholder="e.g., User login form" className="neo-input" required />
{/* Description */}