import React, { useState, useEffect } from 'react'; import { Task } from '../types/task'; interface TaskFormProps { task?: Task; onSave: (task: Task) => void; onCancel: () => void; } const TaskForm: React.FC = ({ task, onSave, onCancel }) => { const [title, setTitle] = useState(task?.title || ''); const [description, setDescription] = useState(task?.description || ''); const [date, setDate] = useState(task?.date ? new Date(task.date).toISOString().split('T')[0] : ''); const [completed, setCompleted] = useState(task?.completed || false); const [category, setCategory] = useState(task?.category || ''); const [priority, setPriority] = useState(task?.priority || 'medium'); const [recurring, setRecurring] = useState(task?.recurring || undefined); const [reminder, setReminder] = useState(task?.reminder ? new Date(task.reminder).toISOString().split('T')[0] : ''); const [tags, setTags] = useState(task?.tags || []); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); const newTask: Task = { id: task?.id || Date.now().toString(), title, description, date: new Date(date), completed, category, priority, recurring, reminder: reminder ? new Date(reminder) : undefined, tags }; onSave(newTask); }; const handleTagAdd = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && (e.target as HTMLInputElement).value.trim() !== '') { const tagValue = (e.target as HTMLInputElement).value.trim(); if (!tags.includes(tagValue)) { setTags([...tags, tagValue]); } (e.target as HTMLInputElement).value = ''; } }; const handleTagRemove = (index: number) => { setTags(tags.filter((_, i) => i !== index)); }; return (

{task ? 'Edit Task' : 'Add New Task'}

setTitle(e.target.value)} className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" required />