"use client"; import type React from "react"; import Image from "next/image"; import { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Textarea } from "@/components/ui/textarea"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { MultiSelect } from "@/components/multi-select"; import { Icons } from "@/components/icons"; import type { Todo, Tag } from "@/services/api-types"; interface TodoFormProps { todo?: Todo; tags: Tag[]; onSubmit: (todo: Partial) => void; } export function TodoForm({ todo, tags, onSubmit }: TodoFormProps) { const [formData, setFormData] = useState>({ title: "", description: "", status: "pending", deadline: undefined, tagIds: [], image: null, }); const [imagePreview, setImagePreview] = useState(null); useEffect(() => { if (todo) { setFormData({ title: todo.title, description: todo.description || "", status: todo.status, deadline: todo.deadline, tagIds: todo.tagIds || [], image: todo.image || null, }); if (todo.image) { setImagePreview(todo.image); } } }, [todo]); const handleChange = ( e: React.ChangeEvent ) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); }; const handleSelectChange = (name: string, value: string) => { setFormData((prev) => ({ ...prev, [name]: value })); }; const handleTagsChange = (selected: string[]) => { setFormData((prev) => ({ ...prev, tagIds: selected })); }; const handleImageChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (!file) return; // In a real app, we would upload the file to a server and get a URL back // For now, we'll create a local object URL const imageUrl = URL.createObjectURL(file); setImagePreview(imageUrl); setFormData((prev) => ({ ...prev, image: imageUrl })); }; const handleRemoveImage = () => { setImagePreview(null); setFormData((prev) => ({ ...prev, image: null })); }; const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); onSubmit(formData); }; return (