1+ import type { Metadata } from 'next' ;
2+
3+ export const metadata : Metadata = {
4+ title : 'Accessibility Statement — VeriNode' ,
5+ description :
6+ 'VeriNode is committed to WCAG 2.1 AA accessibility. Learn about our compliance status, known issues, and how to report barriers.' ,
7+ } ;
8+
9+ export default function AccessibilityStatementPage ( ) {
10+ const lastUpdated = '2026-08-24' ;
11+
12+ return (
13+ < main id = "main-content" className = "mx-auto min-h-screen max-w-3xl px-4 py-12 text-zinc-900 dark:text-zinc-100" aria-label = "Accessibility statement" >
14+ < h1 className = "mb-2 text-3xl font-bold" > Accessibility Statement</ h1 >
15+ < p className = "mb-8 text-sm text-zinc-500 dark:text-zinc-400" >
16+ Last updated: { lastUpdated }
17+ </ p >
18+
19+ { /* ------------------------------------------------------------------ */ }
20+ { /* 1. Commitment */ }
21+ { /* ------------------------------------------------------------------ */ }
22+ < section className = "mb-8" aria-labelledby = "sec-commitment" >
23+ < h2 id = "sec-commitment" className = "mb-3 text-xl font-semibold" > Our Commitment</ h2 >
24+ < p className = "leading-relaxed" >
25+ VeriNode is committed to providing a digital experience that is
26+ accessible to the widest possible audience, regardless of technology or
27+ ability. We are actively working to increase the accessibility and
28+ usability of our dashboard and, in doing so, aim to meet or exceed the{ ' ' }
29+ < a
30+ href = "https://www.w3.org/TR/WCAG21/"
31+ target = "_blank"
32+ rel = "noopener noreferrer"
33+ className = "text-primary underline hover:opacity-80"
34+ >
35+ Web Content Accessibility Guidelines (WCAG) 2.1 Level AA
36+ </ a >
37+ .
38+ </ p >
39+ </ section >
40+
41+ { /* ------------------------------------------------------------------ */ }
42+ { /* 2. Compliance status */ }
43+ { /* ------------------------------------------------------------------ */ }
44+ < section className = "mb-8" aria-labelledby = "sec-status" >
45+ < h2 id = "sec-status" className = "mb-3 text-xl font-semibold" > Compliance Status</ h2 >
46+ < p className = "leading-relaxed" >
47+ The Web Content Accessibility Guidelines (WCAG) define requirements for
48+ designers and developers to improve accessibility for people with
49+ disabilities. It defines three levels of conformance: Level A, Level
50+ AA, and Level AAA.
51+ </ p >
52+ < p className = "mt-3 leading-relaxed" >
53+ < strong > VeriNode is partially conformant with WCAG 2.1 Level AA.</ strong > { ' ' }
54+ Partially conformant means that some parts of the content do not yet
55+ fully conform to the accessibility standard.
56+ </ p >
57+ </ section >
58+
59+ { /* ------------------------------------------------------------------ */ }
60+ { /* 3. Measures taken */ }
61+ { /* ------------------------------------------------------------------ */ }
62+ < section className = "mb-8" aria-labelledby = "sec-measures" >
63+ < h2 id = "sec-measures" className = "mb-3 text-xl font-semibold" > Measures We Take</ h2 >
64+ < ul className = "list-disc space-y-2 pl-5 leading-relaxed" >
65+ < li >
66+ Automated accessibility testing (
67+ < code className = "rounded bg-zinc-200 px-1 text-sm dark:bg-zinc-700" > @axe-core/playwright</ code > { ' ' }
68+ and < code className = "rounded bg-zinc-200 px-1 text-sm dark:bg-zinc-700" > jest-axe</ code > ) against WCAG 2.1 A
69+ and AA rules, integrated into our CI pipeline.
70+ </ li >
71+ < li > Manual keyboard-navigation audits across all interactive components.</ li >
72+ < li > Color-contrast verification using the WCAG relative-luminance formula.</ li >
73+ < li >
74+ A screen-reader live region (< code className = "rounded bg-zinc-200 px-1 text-sm dark:bg-zinc-700" > aria-live</ code > ) announcing
75+ transaction statuses, errors, and dynamic content changes.
76+ </ li >
77+ < li > Visible focus indicators on all interactive elements for keyboard users.</ li >
78+ < li > A skip-to-content link at the top of every page.</ li >
79+ < li > Regular accessibility reviews as part of our design and development process.</ li >
80+ </ ul >
81+ </ section >
82+
83+ { /* ------------------------------------------------------------------ */ }
84+ { /* 4. Known limitations */ }
85+ { /* ------------------------------------------------------------------ */ }
86+ < section className = "mb-8" aria-labelledby = "sec-limitations" >
87+ < h2 id = "sec-limitations" className = "mb-3 text-xl font-semibold" > Known Limitations</ h2 >
88+ < p className = "leading-relaxed" >
89+ Despite our best efforts, some content may not yet be fully adapted to
90+ the strictest accessibility standards. This may be a result of not
91+ having found or identified the most appropriate technological solution.
92+ </ p >
93+ < ul className = "mt-3 list-disc space-y-2 pl-5 leading-relaxed" >
94+ < li >
95+ < strong > Canvas-rendered charts and topology maps</ strong > : Some
96+ data-visualization components rendered on < code > <canvas></ code > { ' ' }
97+ elements lack accessible text alternatives. We are investigating
98+ aria-label and fallback text solutions.
99+ </ li >
100+ < li >
101+ < strong > Third-party Web3 wallet modals</ strong > : Wallet-connection
102+ modals provided by external wallet libraries may not fully comply
103+ with our accessibility standards.
104+ </ li >
105+ </ ul >
106+ </ section >
107+
108+ { /* ------------------------------------------------------------------ */ }
109+ { /* 5. Feedback */ }
110+ { /* ------------------------------------------------------------------ */ }
111+ < section className = "mb-8" aria-labelledby = "sec-feedback" >
112+ < h2 id = "sec-feedback" className = "mb-3 text-xl font-semibold" > Feedback & Contact</ h2 >
113+ < p className = "leading-relaxed" >
114+ We welcome your feedback on the accessibility of VeriNode. Please let
115+ us know if you encounter accessibility barriers:
116+ </ p >
117+ < ul className = "mt-3 list-disc space-y-2 pl-5 leading-relaxed" >
118+ < li >
119+ < strong > GitHub Issues:</ strong > { ' ' }
120+ < a
121+ href = "https://github.com/VeriNode-Labs/VeriNode-Frontend/issues/new"
122+ target = "_blank"
123+ rel = "noopener noreferrer"
124+ className = "text-primary underline hover:opacity-80"
125+ >
126+ Open an accessibility issue
127+ </ a >
128+ </ li >
129+ < li >
130+ < strong > Email:</ strong > { ' ' }
131+ < a href = "mailto:accessibility@verinode.io" className = "text-primary underline hover:opacity-80" >
132+ accessibility@verinode.io
133+ </ a >
134+ </ li >
135+ </ ul >
136+ < p className = "mt-3 leading-relaxed" >
137+ We aim to respond to accessibility feedback within 5 business days.
138+ </ p >
139+ </ section >
140+
141+ { /* ------------------------------------------------------------------ */ }
142+ { /* 6. Technical specifications */ }
143+ { /* ------------------------------------------------------------------ */ }
144+ < section className = "mb-8" aria-labelledby = "sec-tech" >
145+ < h2 id = "sec-tech" className = "mb-3 text-xl font-semibold" > Technical Specifications</ h2 >
146+ < p className = "leading-relaxed" >
147+ Accessibility of VeriNode relies on the following technologies to work
148+ with the particular combination of web browser and any assistive
149+ technologies or plugins installed on your computer:
150+ </ p >
151+ < ul className = "mt-3 list-disc space-y-2 pl-5 leading-relaxed" >
152+ < li > HTML</ li >
153+ < li > WAI-ARIA</ li >
154+ < li > CSS</ li >
155+ < li > JavaScript</ li >
156+ < li > React / Next.js</ li >
157+ </ ul >
158+ < p className = "mt-3 leading-relaxed" >
159+ These technologies are relied upon for conformance with the
160+ accessibility standards used.
161+ </ p >
162+ </ section >
163+
164+ { /* ------------------------------------------------------------------ */ }
165+ { /* 7. Assessment approach */ }
166+ { /* ------------------------------------------------------------------ */ }
167+ < section className = "mb-8" aria-labelledby = "sec-assessment" >
168+ < h2 id = "sec-assessment" className = "mb-3 text-xl font-semibold" > Assessment Approach</ h2 >
169+ < p className = "leading-relaxed" >
170+ VeriNode assessed the accessibility of this application by the
171+ following approaches:
172+ </ p >
173+ < ul className = "mt-3 list-disc space-y-2 pl-5 leading-relaxed" >
174+ < li >
175+ < strong > Automated testing:</ strong > axe-core (Playwright) and jest-axe
176+ run in CI on every pull request, failing the build on critical and
177+ serious WCAG 2.1 A/AA violations.
178+ </ li >
179+ < li >
180+ < strong > Manual keyboard audit:</ strong > All interactive components
181+ are manually tested with keyboard-only navigation (Tab, Enter, Space,
182+ Escape, Arrow keys).
183+ </ li >
184+ < li >
185+ < strong > Screen-reader testing:</ strong > Tested with NVDA (Windows)
186+ and VoiceOver (macOS) on representative user flows.
187+ </ li >
188+ </ ul >
189+ </ section >
190+
191+ { /* ------------------------------------------------------------------ */ }
192+ { /* Footer */ }
193+ { /* ------------------------------------------------------------------ */ }
194+ < footer className = "mt-12 border-t border-zinc-200 pt-6 text-sm text-zinc-500 dark:border-zinc-700 dark:text-zinc-400" >
195+ < p >
196+ This statement was created on { lastUpdated } and is reviewed quarterly.
197+ For the latest version, visit{ ' ' }
198+ < a href = "/accessibility" className = "text-primary underline" >
199+ /accessibility
200+ </ a >
201+ .
202+ </ p >
203+ </ footer >
204+ </ main >
205+ ) ;
206+ }
0 commit comments