import { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' import api from '@/services/api' import type { Milestone, Project } from '@/types' import dayjs from 'dayjs' import MilestoneFormModal from '@/components/MilestoneFormModal' export default function MilestonesPage() { const [milestones, setMilestones] = useState([]) const [projects, setProjects] = useState([]) const [projectFilter, setProjectFilter] = useState('') const [showCreate, setShowCreate] = useState(false) const navigate = useNavigate() const fetchMilestones = () => { const params = projectFilter ? `?project_id=${projectFilter}` : '' api.get(`/milestones${params}`).then(({ data }) => setMilestones(data)) } useEffect(() => { api.get('/projects').then(({ data }) => setProjects(data)) }, []) useEffect(() => { fetchMilestones() }, [projectFilter]) return (

🏁 Milestones ({milestones.length})

setShowCreate(false)} initialProjectId={projectFilter ? Number(projectFilter) : undefined} lockProject={Boolean(projectFilter)} onSaved={() => fetchMilestones()} />
{milestones.map((ms) => (
navigate(`/milestones/${ms.milestone_code || ms.id}`)}>
{ms.status}

{ms.title}

{ms.milestone_code && {ms.milestone_code}}

{ms.description || 'No description'}

{ms.planned_release_date && Release: {dayjs(ms.planned_release_date).format('YYYY-MM-DD')}} {ms.due_date && Due: {dayjs(ms.due_date).format('YYYY-MM-DD')}} Created {dayjs(ms.created_at).format('YYYY-MM-DD')}
))} {milestones.length === 0 &&

No milestones

}
) }