import React, { useState } from 'react' function AccessibilitySection({ accessibility }) { const [expandedViolation, setExpandedViolation] = useState(null) const [filterLevel, setFilterLevel] = useState('all') if (!accessibility) { return (

Accessibility data not available

) } const getScoreColor = (score) => { if (score >= 90) return 'text-success-600' if (score >= 75) return 'text-primary-600' if (score >= 60) return 'text-warning-600' return 'text-error-600' } const getImpactColor = (impact) => { if (impact === 'critical') return 'badge-error' if (impact === 'serious') return 'badge-error' if (impact === 'moderate') return 'badge-warning' return 'badge-info' } const getComplianceColor = (status) => { return status === 'Compliant' ? 'text-success-600' : 'text-error-600' } const filteredViolations = accessibility.violations?.filter(violation => { if (filterLevel === 'all') return true return violation.impact === filterLevel }) || [] return (
{/* Summary */}

Accessibility Overview

{accessibility.summary.score} /100

Accessibility Score

{accessibility.summary.totalViolations}

Total Violations

{accessibility.summary.totalPasses}

Passed Tests

{accessibility.summary.totalIncomplete}

Manual Review Needed

{/* Impact Breakdown */}

Violations by Impact

{Object.entries(accessibility.summary.violationsByImpact).map(([impact, count]) => (
{count}

{impact}

))}
{/* WCAG Compliance */}

WCAG Compliance Status

WCAG 2.1 Level A: {accessibility.violations?.some(v => v.tags?.includes('wcag2a')) ? 'Non-compliant' : 'Compliant'}
WCAG 2.1 Level AA: {accessibility.violations?.some(v => v.tags?.includes('wcag2aa')) ? 'Non-compliant' : 'Compliant'}

Key Categories

{Object.entries(accessibility.summary.categories || {}).slice(0, 5).map(([category, issues]) => (
{category.replace('-', ' ')}: {issues.length} issues
))}
{/* Violations List */}

Accessibility Violations

{/* Filter */}
{filteredViolations.length === 0 ? (

{filterLevel === 'all' ? 'No Violations Found!' : `No ${filterLevel} violations found`}

{filterLevel === 'all' ? 'Great job! Your website passed all automated accessibility tests.' : `Try selecting "All Impacts" to see other violation levels.` }

) : (
{filteredViolations.map((violation, index) => (
{expandedViolation === index && (
{/* Help Information */}
How to Fix

{violation.help}

{violation.helpUrl && ( Learn more → )}
{/* Affected Elements */} {violation.nodes && violation.nodes.length > 0 && (
Affected Elements ({violation.nodes.length})
{violation.nodes.slice(0, 5).map((node, nodeIndex) => (
Target: {node.target?.join(', ') || 'Unknown'}
{node.html?.substring(0, 150)} {node.html?.length > 150 && '...'}
))} {violation.nodes.length > 5 && (

... and {violation.nodes.length - 5} more elements

)}
)} {/* Tags */} {violation.tags && violation.tags.length > 0 && (
Related Standards
{violation.tags.map(tag => ( {tag.toUpperCase()} ))}
)}
)}
))}
)}
{/* Additional Info */}

About This Analysis

) } export default AccessibilitySection