import { useState, useEffect } from 'react'; const ReportGenerator = () => { const [reports, setReports] = useState([]); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [filter, setFilter] = useState('all'); useEffect(() => { const fetchReports = async () => { setLoading(true); try { const response = await fetch('/wp-json/accessibility/v1/reports', { method: 'GET', headers: { 'Content-Type': 'application/json', // eslint-disable-next-line no-undef 'X-WP-Nonce': accessibilityEnhancer.nonce, // Include the nonce passed via wp_localize_script }, }); if (response.ok) { const data = await response.json(); if (data && Array.isArray(data.data)) { setReports(data.data); } else { setReports([]); } } else { throw new Error(`Failed to fetch reports: ${response.status}`); } } catch (err) { setError(err.message); } finally { setLoading(false); } }; fetchReports(); }, []); const filteredReports = reports.filter((report) => { if (filter === 'all') return true; return report.issues.some((issue) => issue.issue === filter); }); return (

Accessibility Reports

{/* Loading and Error Announcements */} {loading && (

Loading reports...

)} {error && (

{error}

)} {!loading && !error && reports.length === 0 && (

No accessibility issues found.

)} {!loading && !error && reports.length > 0 && ( <> {/* Filter Section */}
Filter Reports
{/* Reports List */} )}
); }; export default ReportGenerator;