"use client"; import React, { useState, useEffect } from "react"; import { db } from "@/lib/firebase"; import { collection, onSnapshot, addDoc, updateDoc, deleteDoc, doc, query, orderBy } from "firebase/firestore"; import { motion, AnimatePresence } from "framer-motion"; import { Plus, Trash2, CheckCircle2, Circle, Clock } from "lucide-react"; interface Task { id: string; title: string; status: "todo" | "doing" | "done"; priority: "low" | "medium" | "high"; } export default function TasksPage() { const [tasks, setTasks] = useState([]); const [newTask, setNewTask] = useState(""); useEffect(() => { const unsub = onSnapshot(collection(db, "tasks"), (snap) => { setTasks(snap.docs.map(doc => ({ id: doc.id, ...doc.data() } as Task))); }); return () => unsub(); }, []); const addTask = async (e: React.FormEvent) => { e.preventDefault(); if (!newTask.trim()) return; await addDoc(collection(db, "tasks"), { title: newTask, status: "todo", priority: "medium", createdAt: new Date() }); setNewTask(""); }; const toggleStatus = async (task: Task) => { const nextStatus = task.status === "todo" ? "doing" : task.status === "doing" ? "done" : "todo"; await updateDoc(doc(db, "tasks", task.id), { status: nextStatus }); }; return (

TASKS / SYSTEM

Gestión de flujo de trabajo corporativo

setNewTask(e.target.value)} className="w-full bg-white/5 border border-white/10 rounded-3xl px-8 py-6 outline-none focus:border-blue-500/40 transition-all text-xl font-medium placeholder:text-gray-700 backdrop-blur-md" />
t.status === "todo")} onToggle={toggleStatus} /> t.status === "doing")} onToggle={toggleStatus} /> t.status === "done")} onToggle={toggleStatus} />
); } function TaskColumn({ title, status, tasks, onToggle }: { title: string, status: string, tasks: Task[], onToggle: (t: Task) => void }) { return (

{title}

{tasks.length}
{tasks.map((task) => ( onToggle(task)} >
{status === "done" ? : status === "doing" ? : }

{task.title}

{task.priority || 'medium'}
))}
); }