import { ClipLoader } from 'react-spinners'; import LoanRepayment from './LoanRepayment.js'; import './PopoutPanel.css'; function PopoutPanel({ data = {}, userState = 'N/A', // Passed explicitly from Dashboard loading = false, error = null, closePanel }) { console.log('PopoutPanel Props:', { data, loading, error, userState }); if (loading) { return (

Loading Career Details...

); } if (error) { return (

Error Loading Career Details

{error}

); } // Handle empty data gracefully if (!data || Object.keys(data).length === 0) { return (

No Career Data Available

); } // Safely access nested data with fallbacks const { title = 'Career Details', economicProjections = {}, salaryData = [], schools = [], tuitionData = [] } = data; const tenthPercentileSalary = salaryData?.find( (point) => point.percentile === '10th Percentile' )?.value || 0; const getProgramLength = (degreeType) => { if (degreeType?.includes("Associate")) return 2; if (degreeType?.includes("Bachelor")) return 4; if (degreeType?.includes("Master")) return 6; if (degreeType?.includes("Doctoral") || degreeType?.includes("First Professional")) return 8; if (degreeType?.includes("Certificate")) return 1; return 4; // Default to 4 years if unspecified }; return (

{title}

{/* Schools Offering Programs */}

Schools Offering Programs

{Array.isArray(schools) && schools.length > 0 ? ( ) : (

No schools available.

)} {/* Economic Projections */}

Economic Projections for {userState}

{economicProjections && typeof economicProjections === 'object' ? ( ) : (

No economic projections available.

)} {/* Salary Data Points */}

Salary Data

{salaryData && salaryData.length > 0 ? ( {salaryData.map((point, index) => ( ))}
Percentile Salary
{point.percentile} {point.value > 0 ? `$${parseInt(point.value, 10).toLocaleString()}` : 'N/A'}
) : (

No salary data available.

)} {/* Loan Repayment Analysis */} {tenthPercentileSalary > 0 && ( { const matchingTuitionData = tuitionData.find( (tuition) => tuition['school.name']?.toLowerCase().trim() === school['Institution Name']?.toLowerCase().trim() ); const years = getProgramLength(school['CREDDESC']); return { schoolName: school['Institution Name'], inState: parseFloat(matchingTuitionData?.['latest.cost.tuition_in_state'] * years) || 0, outOfState: parseFloat(matchingTuitionData?.['latest.cost.tuition_out_of_state'] * years) || 0, }; })} salaryData={[{ percentile: '10th Percentile', value: tenthPercentileSalary, growthRate: 0.03 }]} earningHorizon={10} /> )}
); } export default PopoutPanel;