import { useState, useEffect, Suspense } from 'react';
import Spline from '@splinetool/react-spline';
import {
BarChart,
PieChart,
Layout,
Plus,
Search,
Filter,
Calendar,
Clock,
Tag,
CheckCircle2,
XCircle,
AlertCircle
} from 'lucide-react';
// Add proper Spline component
const SplineScene = () => {
return (
);
};
const LoadingSpinner = () => (
);
export default function TaskManagementSystem() {
const [tasks, setTasks] = useState(() => {
const savedTasks = localStorage.getItem('tasks');
return savedTasks ? JSON.parse(savedTasks) : [
{ id: 1, title: 'Implement Authentication', status: 'In Progress', priority: 'High', category: 'Backend', dueDate: '2024-02-20', created: '2024-01-15' },
{ id: 2, title: 'Design Dashboard Layout', status: 'Completed', priority: 'Medium', category: 'Frontend', dueDate: '2024-02-15', created: '2024-01-16' },
{ id: 3, title: 'API Integration', status: 'Pending', priority: 'High', category: 'Backend', dueDate: '2024-02-25', created: '2024-01-17' },
];
});
const [filter, setFilter] = useState({ status: 'all', priority: 'all', category: 'all' });
const [searchQuery, setSearchQuery] = useState('');
const [newTask, setNewTask] = useState({
title: '',
status: 'Pending',
priority: 'Medium',
category: 'Frontend',
dueDate: ''
});
const [activeTab, setActiveTab] = useState('tasks');
useEffect(() => {
localStorage.setItem('tasks', JSON.stringify(tasks));
}, [tasks]);
const addTask = (e) => {
e.preventDefault();
if (!newTask.title.trim() || !newTask.dueDate) return;
setTasks(prev => [...prev, {
id: Date.now(),
...newTask,
created: new Date().toISOString().split('T')[0]
}]);
setNewTask({
title: '',
status: 'Pending',
priority: 'Medium',
category: 'Frontend',
dueDate: ''
});
};
const filteredTasks = tasks.filter(task => {
const matchesSearch = task.title.toLowerCase().includes(searchQuery.toLowerCase());
const matchesStatus = filter.status === 'all' || task.status === filter.status;
const matchesPriority = filter.priority === 'all' || task.priority === filter.priority;
const matchesCategory = filter.category === 'all' || task.category === filter.category;
return matchesSearch && matchesStatus && matchesPriority && matchesCategory;
});
const getAnalytics = () => {
const statusCount = tasks.reduce((acc, task) => {
acc[task.status] = (acc[task.status] || 0) + 1;
return acc;
}, {});
const priorityCount = tasks.reduce((acc, task) => {
acc[task.priority] = (acc[task.priority] || 0) + 1;
return acc;
}, {});
return { statusCount, priorityCount };
};
const updateTaskStatus = (taskId, newStatus) => {
setTasks(prev => prev.map(task =>
task.id === taskId ? { ...task, status: newStatus } : task
));
};
return (
{/* Hero Section with fixed 3D Animation */}
}>
Task Management System
Organize, track, and visualize your projects with our powerful task management solution
{/* Main Content */}
{/* Glass-morphism styled tabs */}
{activeTab === 'tasks' ? (
{/* Task Creation Form - Enhanced with glass morphism */}
{/* Filters and Search */}
{/* Task Cards - Enhanced with modern design */}
{filteredTasks.map(task => (
{task.title}
{task.priority}
{task.category}
Due: {task.dueDate}
Created: {task.created}
))}
) : (
// Analytics View - Enhanced with 3D elements
Task Status Distribution
{Object.entries(getAnalytics().statusCount).map(([status, count]) => (
))}
Priority Distribution
{Object.entries(getAnalytics().priorityCount).map(([priority, count]) => (
))}
)}
);
}