export function calculateAQI(pm2_5: number): number { const breakpoints = [ { pmLow: 0.0, pmHigh: 12.0, aqiLow: 0, aqiHigh: 50 }, { pmLow: 12.1, pmHigh: 35.4, aqiLow: 51, aqiHigh: 100 }, { pmLow: 35.5, pmHigh: 55.4, aqiLow: 101, aqiHigh: 150 }, { pmLow: 55.5, pmHigh: 150.4, aqiLow: 151, aqiHigh: 200 }, { pmLow: 150.5, pmHigh: 250.4, aqiLow: 201, aqiHigh: 300 }, { pmLow: 250.5, pmHigh: 500.4, aqiLow: 301, aqiHigh: 500 }, ]; const bp = breakpoints.find((b) => pm2_5 >= b.pmLow && pm2_5 <= b.pmHigh); if (!bp) return pm2_5 > 500.4 ? 500 : 0; // Handle out-of-range values return Math.round( ((bp.aqiHigh - bp.aqiLow) / (bp.pmHigh - bp.pmLow)) * (pm2_5 - bp.pmLow) + bp.aqiLow, ); }