import { useState, useEffect } from 'react' import { useNavigate } from 'react-router-dom' import api from '@/services/api' import type { Issue, PaginatedResponse } from '@/types' export default function IssuesPage() { const [issues, setIssues] = useState([]) const [total, setTotal] = useState(0) const [page, setPage] = useState(1) const [totalPages, setTotalPages] = useState(1) const [statusFilter, setStatusFilter] = useState('') const [priorityFilter, setPriorityFilter] = useState('') const navigate = useNavigate() const fetchIssues = () => { const params = new URLSearchParams({ page: String(page), page_size: '20' }) if (statusFilter) params.set('issue_status', statusFilter) api.get>(`/issues?${params}`).then(({ data }) => { setIssues(data.items) setTotal(data.total) setTotalPages(data.total_pages) }) } useEffect(() => { fetchIssues() }, [page, statusFilter, priorityFilter]) const statusColors: Record = { open: '#3b82f6', in_progress: '#f59e0b', resolved: '#10b981', closed: '#6b7280', blocked: '#ef4444', } return (

📋 Issues ({total})

{issues.map((i) => ( navigate(`/issues/${i.id}`)} className="clickable"> ))}
#TitleStatusPriorityTypeSubtypeTagsCreated
{i.id} {i.title} {i.status} {i.priority} {i.issue_type}{i.issue_subtype || "-"} {i.tags || '-'} {new Date(i.created_at).toLocaleDateString()}
{totalPages > 1 && (
{page} / {totalPages}
)}
) }