import { useState } from 'react'; import { useQuery } from '@tanstack/react-query'; import { useReport } from '../hooks/useReport'; import { useSettings } from '../hooks/useSettings'; import { apiFetch, isHomepageUrl, isPremium } from '../lib/api'; import ScanSlideIn from './ScanSlideIn'; import { ReportSkeleton } from './Skeleton'; import type { PageScanSummary } from '../lib/types'; import { labelsForRulesets } from '../lib/rulesets'; // ── Helpers ─────────────────────────────────────────────────── function scoreColor(s: number) { return s >= 90 ? '#22c55e' : s >= 75 ? '#84cc16' : s >= 55 ? '#f59e0b' : s >= 35 ? '#f97316' : '#ef4444'; } // "Issues found" everywhere in the app is the full total — matches the "All" // tab in the frontend overlay/ScanSlideIn (all severities, WCAG + best-practice). function totalCount(scan: PageScanSummary): number { return (scan.issues ?? []).length; } // The homepage's own
No pages scanned yet
Scan pages from the Dashboard tab to see accessibility results here.
No pages match your search.
| # | Page | Grade | Score | Issues | Last Scanned | |
|---|---|---|---|---|---|---|
| {i + 1} | {pageLabel(scan)} {scan.url} | {scan.grade} | {scan.score} | 0 ? '#ef4444' : '#22c55e', fontWeight: 600 }}> {total} | {new Date(scan.scanned_at).toLocaleString(undefined, { month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit', })} |
| WCAG | Severity | Issue | Description | Selector | Elements |
|---|---|---|---|---|---|
| {iss.wcag || '—'} | {iss.severity} | {iss.title} | {iss.description} | {iss.selector || '—'} | {iss.count} |
AccessMate uses automated scanning to identify and help fix accessibility issues. Automated tools can detect only a subset of accessibility problems. For full {rulesetLabel} compliance, manual testing — including testing with assistive technologies such as screen readers — is recommended.
AccessMate helps you find and fix accessibility issues faster. It does not replace a full manual accessibility audit.