import { forwardRef, useState } from 'react' import Sidebar from '../Sidebar' import { sidebarAccessibilityReport } from './SidebarAccessibilityReport' import { generateAccessibilityReport, downloadReport, getMimeType, getFileExtension, type ReportFormat, } from '../../shared/accessibility/reportGenerator' import { Download as DownloadIcon, Package, Home, Users, Settings, FileText, BarChart3, CreditCard, ShoppingCart, Building, DollarSign, Cpu, Search, Bell, LogOut, } from 'lucide-react' import Button from '../../Button/Button' import { ButtonType, ButtonSize } from '../../Button/types' import { Avatar, AvatarSize, AvatarShape } from '../../Avatar' import type { DirectoryData } from '../../Directory/types' export type SidebarAccessibilityProps = { className?: string } const SidebarAccessibility = forwardRef< HTMLDivElement, SidebarAccessibilityProps >(({ className }, ref) => { const [selectedFormat, setSelectedFormat] = useState('markdown') const [includeTestResults, setIncludeTestResults] = useState(true) const [includeRecommendations, setIncludeRecommendations] = useState(true) const [reportHtmlContent, setReportHtmlContent] = useState( null ) const [showFullReport, setShowFullReport] = useState(false) const handleDownload = () => { try { const content = generateAccessibilityReport( sidebarAccessibilityReport, { format: selectedFormat, includeTestResults, includeRecommendations, } ) const filename = `sidebar-accessibility-report-${sidebarAccessibilityReport.reportDate}.${getFileExtension(selectedFormat)}` const mimeType = getMimeType(selectedFormat) downloadReport(content, filename, mimeType) } catch (error) { console.error('Error generating report:', error) alert('Failed to generate report. Please try again.') } } const handleViewReport = () => { try { const htmlContent = generateAccessibilityReport( sidebarAccessibilityReport, { format: 'html', includeTestResults, includeRecommendations, } ) setReportHtmlContent(htmlContent) setShowFullReport(true) } catch (error) { console.error('Error generating report:', error) alert('Failed to generate report. Please try again.') } } const report = sidebarAccessibilityReport const compliantCount = report.criteria.filter( (c) => c.status === 'compliant' ).length const nonCompliantCount = report.criteria.filter( (c) => c.status === 'non-compliant' ).length const unsureCount = report.criteria.filter( (c) => c.status === 'unsure' ).length const totalApplicable = report.criteria.filter( (c) => c.status !== 'not-applicable' ).length const complianceRate = totalApplicable > 0 ? Math.round((compliantCount / totalApplicable) * 100) : 0 const sampleNavigationData: DirectoryData[] = [ { label: 'Main', items: [ { label: 'Dashboard', leftSlot: