import React, { useEffect, useState } from 'react'; /** * Props: * - socCode: e.g. "17-1011" * - stateName: e.g. "Kentucky" (optional; if not provided, defaults to "United States") */ function EconomicProjections({ socCode, stateName }) { const [data, setData] = useState(null); // { state: {...}, national: {...} } const [loading, setLoading] = useState(false); const [error, setError] = useState(null); useEffect(() => { if (!socCode) return; const fetchData = async () => { setLoading(true); setError(null); try { const encodedState = stateName ? encodeURIComponent(stateName) : ''; const url = `/api/projections/${socCode}?state=${encodedState}`; const res = await fetch(url); if (!res.ok) { throw new Error(`Server responded with status ${res.status}`); } const json = await res.json(); setData(json); } catch (err) { console.error("Error fetching economic projections:", err); setError("Failed to load economic projections."); } finally { setLoading(false); } }; fetchData(); }, [socCode, stateName]); if (loading) return
| Metric | {state?.area || 'State'} | {national?.area || 'U.S.'} |
|---|---|---|
| Base Year | {state?.baseYear ?? 'N/A'} | {national?.baseYear ?? 'N/A'} |
| Base Employment | {formatNumber(state?.base)} | {formatNumber(national?.base)} |
| Projected Year | {state?.projectedYear ?? 'N/A'} | {national?.projectedYear ?? 'N/A'} |
| Projected Employment | {formatNumber(state?.projection)} | {formatNumber(national?.projection)} |
| Employment Change | {formatNumber(state?.change)} | {formatNumber(national?.change)} |
| Percent Change | {state?.percentChange != null ? `${state.percentChange}%` : 'N/A'} | {national?.percentChange != null ? `${national.percentChange}%` : 'N/A'} |
| Annual Openings | {formatNumber(state?.annualOpenings)} | {formatNumber(national?.annualOpenings)} |