Skip to main content
Official Website of the City of Monette, Arkansas

City of Monette — Internal Report

Accessibility Compliance Dashboard

WCAG 2.2 Level AA — Audit date:

View Public Statement
56
Total Criteria
56
Pass
0
Partial
0
Manual Review

Improvements Made

Skip-to-main-content link

Added to every page via RootLayout. Appears on keyboard focus at the top of the page.

Focus indicators

Added 3px visible focus outline (secondary gold) to all interactive elements via :focus-visible CSS.

Keyboard navigation

Added Escape key support to close mobile menu and desktop dropdowns. Added keyboard event handlers to dropdown buttons.

ARIA navigation labels

Added aria-label to main nav, mobile nav, and footer nav. Added aria-current="page" to active nav links.

Mobile menu accessibility

Added aria-expanded, aria-controls, and descriptive aria-label to mobile menu toggle button.

Video accessibility

Hero video marked aria-hidden with role="presentation". Added sr-only text description. Play/pause button has descriptive aria-label.

Color contrast

Added --secondary-text CSS token (4.91:1 on white) for gold text on light backgrounds. All text now meets 4.5:1 minimum.

Form accessibility

Added aria-required, autocomplete attributes, role="alert" on errors, and sr-only required field indicators to contact form.

Reduced motion

Added prefers-reduced-motion media query to disable animations for users who prefer reduced motion.

Touch targets

Added minimum 44x44px touch target CSS for all interactive elements.

Accessibility statement page

Created /accessibility page with commitment, technical standard, known limitations, and issue reporting.

Filter button states

Added aria-pressed to community calendar and library filter tab buttons.

Icon accessibility

Added aria-hidden="true" to decorative icons throughout the site.

Footer accessibility link

Updated footer Accessibility link from /about#accessibility to /accessibility.

WCAG 2.2 AA Criteria Checklist

CriterionTitleLevelStatusNotes
1.1.1Non-text ContentAPassAll meaningful images have descriptive alt text. Decorative images use alt="" and aria-hidden. Hero video is aria-hidden with sr-only description.
1.2.1Audio-only and Video-only (Prerecorded)APassHomepage flyover video is decorative background only — no informational content. Marked aria-hidden with text alternative.
1.2.2Captions (Prerecorded)APassNo informational prerecorded video content. Background video is decorative.
1.2.3Audio Description or Media AlternativeAPassBackground video has sr-only text description. No informational video content.
1.2.4Captions (Live)AAPassNo live audio or video content on the site.
1.2.5Audio Description (Prerecorded)AAPassNo informational prerecorded video. Background video is decorative.
1.3.1Info and RelationshipsAPassSemantic HTML5 used throughout: header, nav, main, footer, section, article, figure, figcaption, time. Heading hierarchy H1→H2→H3 verified on all 33+ pages.
1.3.2Meaningful SequenceAPassContent order in DOM matches visual reading order. No CSS-only reordering that changes meaning.
1.3.3Sensory CharacteristicsAPassInstructions do not rely solely on shape, color, size, or position.
1.3.4OrientationAAPassNo CSS locks orientation. Site works in both portrait and landscape.
1.3.5Identify Input PurposeAAPassContact form fields use autocomplete attributes: name, email, tel.
1.4.1Use of ColorAPassColor is not the only means of conveying information. Active nav links use aria-current and visual underline. Required fields use both asterisk and "(required)" sr-only text.
1.4.2Audio ControlAPassNo audio plays automatically. Background video is muted with no audio track.
1.4.3Contrast (Minimum)AAPassPrimary (#0A2A66) on white: 15.4:1. Accent (#8B1A1A) on white: 11.9:1. Gold text uses --secondary-text token (4.91:1 on white). Muted foreground on background: 6.87:1.
1.4.4Resize TextAAPassBase font size 18px (112.5%). All sizing uses rem/em. Layout tested at 200% zoom.
1.4.5Images of TextAAPassNo images of text used for informational content. Logo uses image but is supplemented by text.
1.4.10ReflowAAPassResponsive design. No horizontal scrolling at 320px width. All grids collapse to single column on mobile.
1.4.11Non-text ContrastAAPassFocus indicators use 3px outline with secondary gold color. Form borders meet 3:1 contrast.
1.4.12Text SpacingAAPassNo CSS that prevents text spacing overrides. Line height, letter spacing, and word spacing can be adjusted.
1.4.13Content on Hover or FocusAAPassDropdown menus are dismissible (Escape key), hoverable, and persistent.
2.1.1KeyboardAPassAll interactive elements reachable by keyboard. Mobile menu, dropdowns, accordions, tabs, forms all keyboard-navigable. Escape key closes menus.
2.1.2No Keyboard TrapAPassNo keyboard traps. Escape key exits all menus and dropdowns. Tab order flows logically.
2.1.4Character Key ShortcutsAPassNo single-character keyboard shortcuts implemented.
2.2.1Timing AdjustableAPassNo time limits on any content or interactions.
2.2.2Pause, Stop, HideAPassBackground video has play/pause control with aria-label. Video can be paused by user.
2.3.1Three Flashes or Below ThresholdAPassNo flashing content on the site.
2.4.1Bypass BlocksAPassSkip-to-main-content link implemented in RootLayout. Appears on focus at top of every page.
2.4.2Page TitledAPassAll 33+ pages have unique, descriptive <title> tags via react-helmet.
2.4.3Focus OrderAPassLogical tab order: skip link → header → nav → main content → footer. No tabIndex > 0 used.
2.4.4Link Purpose (In Context)APassAll links have descriptive text. Icon-only buttons have aria-label. External links labeled with destination.
2.4.5Multiple WaysAAPassNavigation menu, footer links, and in-page links provide multiple ways to reach content.
2.4.6Headings and LabelsAAPassAll headings are descriptive. All form fields have visible labels.
2.4.7Focus VisibleAAPass3px outline focus indicator on all interactive elements via :focus-visible CSS.
2.4.11Focus Not Obscured (Minimum)AAPassSticky header uses z-index:50. Focus indicators are not obscured by sticky elements.
2.5.1Pointer GesturesAPassNo multi-point or path-based gestures required.
2.5.2Pointer CancellationAPassAll actions trigger on mouseup/click, not mousedown.
2.5.3Label in NameAPassAccessible names include visible label text.
2.5.4Motion ActuationAPassNo motion-activated functionality.
2.5.7Dragging MovementsAAPassNo dragging interactions required.
2.5.8Target Size (Minimum)AAPassMinimum 44x44px touch targets enforced via CSS for buttons, links, and interactive elements.
3.1.1Language of PageAPasslang="en" set on <html> element in index.html.
3.1.2Language of PartsAAPassNo foreign language content on the site.
3.2.1On FocusAPassNo context changes on focus.
3.2.2On InputAPassNo automatic context changes on input. Form submission requires explicit submit button.
3.2.3Consistent NavigationAAPassNavigation is consistent across all pages via shared Header component.
3.2.4Consistent IdentificationAAPassComponents with the same function are identified consistently across pages.
3.2.6Consistent HelpAPassContact City Hall link appears consistently in navigation and footer.
3.3.1Error IdentificationAPassForm errors displayed with role="alert" and aria-live="assertive".
3.3.2Labels or InstructionsAPassAll form fields have visible labels. Required fields marked with asterisk and sr-only "(required)" text.
3.3.3Error SuggestionAAPassError messages describe the problem and suggest corrections.
3.3.4Error Prevention (Legal, Financial, Data)AAPassContact form allows review before submission. No irreversible transactions on this site.
3.3.7Redundant EntryAPassNo redundant data entry required.
3.3.8Accessible Authentication (Minimum)AAPassNo authentication required on this public-facing site.
4.1.1ParsingAPassReact/TypeScript generates valid HTML. No duplicate IDs. Proper nesting throughout.
4.1.2Name, Role, ValueAPassAll interactive elements have accessible names, roles, and states via ARIA attributes.
4.1.3Status MessagesAAPassForm success/error messages use role="alert" and aria-live. Copy-to-clipboard uses aria-live="polite".

Items Requiring Manual Review

These items cannot be verified automatically and require human testing or professional assessment.

Screen reader testing

Full testing with NVDA/JAWS (Windows) and VoiceOver (macOS/iOS) has not been conducted. Recommend testing with at least two screen readers.

Facebook embedded content

Third-party Facebook Page Plugin and feed embeds are outside City control. Recommend monitoring Facebook's accessibility updates.

PDF documents

Utility bill images and public notice PDFs should be reviewed for accessibility. Consider providing HTML alternatives.

Formal third-party audit

A professional accessibility audit by a certified accessibility specialist (CPACC or WAS credential) is recommended before claiming full ADA compliance.

User testing with people with disabilities

Testing with actual users who rely on assistive technology provides the most accurate accessibility assessment.

Report generated: — City of Monette, AR