'use client'; import { useState, useEffect } from 'react'; type Task = { id: string; task_name: string; task_description: string; task_def_of_done: string; created_at: string; }; type TaskManagerProps = { onTaskSelect?: (taskId: string) => void; selectedTaskId?: string; }; export const TaskManager = ({ onTaskSelect, selectedTaskId }: TaskManagerProps) => { const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(false); const [showForm, setShowForm] = useState(false); const [form, setForm] = useState({ task_name: '', task_description: '', task_def_of_done: '', }); const [error, setError] = useState(null); const fetchTasks = async () => { try { const res = await fetch('/api/admin/tasks'); if (!res.ok) throw new Error(`fetch failed: ${res.status}`); const data = await res.json(); setTasks(data.tasks || []); } catch (err: any) { setError(err.message); } }; useEffect(() => { fetchTasks(); }, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(null); try { const res = await fetch('/api/admin/tasks', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(form), }); if (!res.ok) { const data = await res.json(); throw new Error(data.error || 'creation failed'); } setForm({ task_name: '', task_description: '', task_def_of_done: '' }); setShowForm(false); await fetchTasks(); } catch (err: any) { setError(err.message); } finally { setLoading(false); } }; return (

Tasks

{error && (
{error}
)} {showForm && (
setForm({ ...form, task_name: e.target.value })} className="mt-1 w-full rounded-lg border border-zinc-300 bg-white px-3 py-2 text-sm text-zinc-900 focus:border-zinc-900 focus:outline-none dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:focus:border-zinc-100" placeholder="e.g., Book cheapest flight to Paris" required />