Accessibility and content standards
Baseline standards
Section titled “Baseline standards”- Use one clear
h1per page and preserve heading hierarchy. - Every form control must have a visible label or an equivalent accessible name.
- Interactive controls require keyboard access, visible focus state, and semantic roles.
- Error messages must be perceivable and tied to fields when applicable.
Existing implementation anchors
Section titled “Existing implementation anchors”- Global setup calls
initializeAccessibility()fromsrc/scripts/accessibility.tsinLayout.astro. - Authenticated admin menu in layout script uses
aria-expanded,aria-haspopup, and keyboard escape handling. - Form and interaction patterns should preserve these semantics when extending UI.
Content authoring expectations
Section titled “Content authoring expectations”- Prefer concise, task-oriented headings and section intros.
- Use meaningful link text (avoid “click here”).
- Keep CTA and navigation labels consistent across pages.
- Avoid decorative content that carries essential meaning without text alternatives.
Focus and error patterns
Section titled “Focus and error patterns”- On validation failure, ensure users can discover the error quickly (inline text and focus management where practical).
- Avoid trapping focus unless implementing modal/dialog behavior correctly.
- Keep keyboard order aligned with visual order.
Review checklist
Section titled “Review checklist”- Can the page be used end-to-end with keyboard only?
- Do controls and dynamic UI expose useful names/roles/states?
- Are heading levels and landmarks coherent for screen-reader navigation?
- Are validation and failure states announced clearly?