import React, { useState } from 'react' function RecommendationsSection({ uxCritique, accessibility, report }) { const [filterPriority, setFilterPriority] = useState('all') const [expandedRec, setExpandedRec] = useState(null) // Combine recommendations from different sources const recommendations = [] // Add UX recommendations if (uxCritique?.structured_critique?.recommendations) { recommendations.push(...uxCritique.structured_critique.recommendations.map(rec => ({ ...rec, source: 'UX Analysis', sourceIcon: '🎨' }))) } // Add accessibility recommendations (converted from violations) if (accessibility?.violations) { const a11yRecs = accessibility.violations .filter(v => v.impact === 'critical' || v.impact === 'serious') .slice(0, 5) // Limit to top 5 most important .map(violation => ({ priority: violation.impact === 'critical' ? 'High' : 'Medium', category: 'Accessibility', title: violation.help, description: violation.description, impact: `Affects ${violation.nodes?.length || 0} elements. ${violation.impact} accessibility issue.`, effort: 'Medium', source: 'Accessibility Scan', sourceIcon: '♿', helpUrl: violation.helpUrl })) recommendations.push(...a11yRecs) } // Filter by priority const filteredRecommendations = recommendations.filter(rec => { if (filterPriority === 'all') return true return rec.priority.toLowerCase() === filterPriority.toLowerCase() }) // Sort by priority const priorityOrder = { High: 3, Medium: 2, Low: 1 } filteredRecommendations.sort((a, b) => priorityOrder[b.priority] - priorityOrder[a.priority] ) const getPriorityColor = (priority) => { if (priority === 'High') return 'badge-error' if (priority === 'Medium') return 'badge-warning' return 'badge-success' } const getEffortColor = (effort) => { if (effort === 'High') return 'text-error-600' if (effort === 'Medium') return 'text-warning-600' return 'text-success-600' } return (
High Priority
Medium Priority
Low Priority
Total Items
Your website has critical issues that should be addressed immediately. Focus on the high-priority items below to improve user experience and accessibility.
{filterPriority === 'all' ? 'Great job! No specific recommendations were generated.' : 'Try selecting "All Priorities" to see other recommendations.' }
{rec.description}
{rec.impact}
💡 Generated by AI UX analysis
)} {rec.source === 'Accessibility Scan' && (♿ Found in accessibility audit
)}