import { useEffect, useState } from 'react' import { Activity, Plus, Edit2, Trash2, ChevronRight } from 'lucide-react' import { useNavigate } from 'react-router-dom' import axios from 'axios' import LitterForm from '../components/LitterForm' function LitterList() { const [litters, setLitters] = useState([]) const [loading, setLoading] = useState(true) const [showForm, setShowForm] = useState(false) const [editingLitter, setEditingLitter] = useState(null) const [prefill, setPrefill] = useState(null) const navigate = useNavigate() useEffect(() => { fetchLitters() // Auto-open form with prefill from BreedingCalendar "Record Litter" CTA const stored = sessionStorage.getItem('prefillLitter') if (stored) { try { const data = JSON.parse(stored) setPrefill(data) setEditingLitter(null) setShowForm(true) } catch (e) { /* ignore */ } sessionStorage.removeItem('prefillLitter') } }, []) const fetchLitters = async () => { try { const res = await axios.get('/api/litters') setLitters(res.data) } catch (error) { console.error('Error fetching litters:', error) } finally { setLoading(false) } } const handleCreate = () => { setEditingLitter(null) setPrefill(null) setShowForm(true) } const handleEdit = (e, litter) => { e.stopPropagation() setEditingLitter(litter) setPrefill(null) setShowForm(true) } const handleDelete = async (e, id) => { e.stopPropagation() if (!window.confirm('Delete this litter record? Puppies will be unlinked but not deleted.')) return try { await axios.delete(`/api/litters/${id}`) fetchLitters() } catch (error) { console.error('Error deleting litter:', error) } } const handleSave = () => { fetchLitters() } if (loading) { return
Loading litters...
} return (

Litters

{litters.length === 0 ? (

No litters recorded yet

Create a litter after a breeding cycle to track puppies

) : (
{litters.map(litter => (
navigate(`/litters/${litter.id}`)} >

🐾 {litter.sire_name} × {litter.dam_name}

📅 Bred: {new Date(litter.breeding_date).toLocaleDateString()} {litter.whelping_date && ( 💕 Whelped: {new Date(litter.whelping_date).toLocaleDateString()} )} {litter.actual_puppy_count ?? litter.puppies?.length ?? litter.puppy_count ?? 0} puppies
{litter.notes && (

{litter.notes}

)}
))}
)} {showForm && ( setShowForm(false)} onSave={handleSave} /> )}
) } export default LitterList