import { useState, useEffect, useContext } from 'react' import { Plus, Search, FolderKanban } from 'lucide-react' import { AppContext } from '../App' import { api } from '../utils/api' import { useAuth } from '../contexts/AuthContext' import ProjectCard from '../components/ProjectCard' import Modal from '../components/Modal' const EMPTY_PROJECT = { name: '', description: '', brand_id: '', status: 'active', owner_id: '', due_date: '', } export default function Projects() { const { teamMembers, brands } = useContext(AppContext) const { permissions } = useAuth() const [projects, setProjects] = useState([]) const [loading, setLoading] = useState(true) const [showModal, setShowModal] = useState(false) const [formData, setFormData] = useState(EMPTY_PROJECT) const [searchTerm, setSearchTerm] = useState('') useEffect(() => { loadProjects() }, []) const loadProjects = async () => { try { const res = await api.get('/projects') setProjects(res.data || res || []) } catch (err) { console.error('Failed to load projects:', err) } finally { setLoading(false) } } const handleCreate = async () => { try { const data = { name: formData.name, description: formData.description, brand_id: formData.brand_id ? Number(formData.brand_id) : null, owner_id: formData.owner_id ? Number(formData.owner_id) : null, status: formData.status, due_date: formData.due_date || null, } await api.post('/projects', data) setShowModal(false) setFormData(EMPTY_PROJECT) loadProjects() } catch (err) { console.error('Create failed:', err) } } const filtered = projects.filter(p => { if (searchTerm && !p.name?.toLowerCase().includes(searchTerm.toLowerCase())) return false return true }) if (loading) { return (
No projects yet
Create your first project to start organizing work