import { useState, useEffect } from 'react'; import { Plus, Loader2, AlertCircle } from 'lucide-react'; import api from '../api/api'; import PackageCard from './PackageCard'; import CreatePackageModal from './CreatePackageModal'; const PackagePanel = ({ photographerId }) => { const [packages, setPackages] = useState([]); const [loading, setLoading] = useState(true); const [isModalOpen, setIsModalOpen] = useState(false); const [editingPackage, setEditingPackage] = useState(null); useEffect(() => { fetchPackages(); }, []); const fetchPackages = async () => { try { const res = await api.get(`/packages/photographer/${photographerId}`); setPackages(res.data); } catch (err) { console.error('Failed to load packages:', err); } finally { setLoading(false); } }; const handleSavePackage = async (formData) => { try { if (editingPackage) { const res = await api.put(`/packages/${editingPackage._id}`, formData); setPackages(packages.map(p => (p._id === res.data._id ? res.data : p))); } else { const res = await api.post('/packages', formData); setPackages([...packages, res.data]); } setIsModalOpen(false); setEditingPackage(null); } catch (err) { alert(err.response?.data?.message || 'Failed to save package'); } }; const handleDeletePackage = async (packageId) => { if (!window.confirm('Are you sure you want to delete this package?')) return; try { await api.delete(`/packages/${packageId}`); setPackages(packages.filter(p => p._id !== packageId)); } catch (err) { alert('Failed to delete package'); } }; const handleEdit = (pkg) => { setEditingPackage(pkg); setIsModalOpen(true); }; if (loading) { return (
No packages yet
Create your first package to let customers book you!