import { useState } from 'react'; import type { NewTaskInput } from '../types'; import './CreateTaskForm.css'; interface CreateTaskFormProps { onCreateTask: (task: NewTaskInput) => void; } export default function CreateTaskForm({ onCreateTask }: CreateTaskFormProps) { const [isOpen, setIsOpen] = useState(false); const [name, setName] = useState(''); const [doesRepeat, setDoesRepeat] = useState(true); const [repeatAmount, setRepeatAmount] = useState('1'); const [repeatUnit, setRepeatUnit] = useState<'WEEKS' | 'MONTHS' | 'YEARS'>('WEEKS'); const [toDoToday, setToDoToday] = useState(true); const [priority, setPriority] = useState<'ESSENTIAL' | 'WHEN_I_HAVE_TIME'>('ESSENTIAL'); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!name.trim()) { alert('Please enter a task name'); return; } const taskInput: NewTaskInput = { name: name.trim(), doesRepeat, repeatsEvery: doesRepeat ? `${repeatAmount}_${repeatUnit}` : undefined, priority, toDoToday, }; onCreateTask(taskInput); // Reset form setName(''); setDoesRepeat(true); setRepeatAmount('1'); setRepeatUnit('WEEKS'); setToDoToday(true); setPriority('ESSENTIAL'); setIsOpen(false); }; return (
{!isOpen ? ( ) : (

Create New Task

setName(e.target.value.slice(0, 60))} placeholder="task name" maxLength={60} autoFocus /> {name.length}/60
{doesRepeat && (
setRepeatAmount(e.target.value)} min="1" max="999" className="repeat-amount" />
)}
)}
); }