Phase 2d: accessibility fixes, the newsletter on atelier pages, and the category banners #6
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/phase-2d-a11y"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Vera's gate on Phase 2c listed accessibility gaps and two bugs that were already live. This PR fixes them. Everything still works with a mouse exactly as before. In addition, the site now works with a keyboard and a screen reader. Only three things look different:
Nothing changes on the server.
Commits:
elements/newsletter.vue).mailerlite.jswas loaded by a relative path. On/aanbod/<cat>/<atelier>that path 404ed, so the newsletter form never appeared there. It is now/assets/scripts/mailerlite.js. On Schilderkunst, the form now renders, with its email field.elements/category.vue). The code asked for..._Kinderen.svg, but the files are named..._KINDEREN.svg. That gave 6 × 404 on every visit to/. The reference now uses capitals and a root-absolute path; the files are unchanged. Focus has no texture file, so it keeps its plain colour. Result: 0 × 404. Visible change: the textures for Kinderen, Jongeren, Volwassenen, Kunstkuur and Track now show (screenshots below).elements/images.vue, WCAG 2.1.1).<button>named by the image's alt text. Enter and Space open the lightbox.aria-expanded,aria-controls="mobile-menu", and the label "Menu openen" or "Menu sluiten". The old label was "Toggle menu".aria-current="page". The hidden English "Current page:" text is gone, so screen readers announce it once, in the reader's language.description, or "Video " when there is none.homepage.yml, only the attribute changes).<main>./gets an h1: the banner line "Dé academie voor beeldende kunsten...", which was a span./aanbodgets an h1: the banner title.###headings now render as<h2>with the h3 look, so a page no longer jumps from h1 to h3. This applies to the ateliers,/inschrijvenand/contact(/academiehas no###headings). Every content heading is###, so no level is lost. "Afgelopen trajecten" also becomes an h2.<button>that did nothing. Now each is a<span>that looks the same at rest. It is not focusable, has no hover colour and no pointer cursor.###.Checked locally with Node 22.14.0 and pnpm 9.1.2 (Corepack). Both builds were made from clean worktrees,
main(93b5696) and this branch, and served side by side. Third-party requests were blocked in both, and the home banner's frame timer was stopped in both.A clean
pnpm install --frozen-lockfileandpnpm buildpass.Pixels: all 22 routes at 375, 768 and 1280, full page (66 pairs).
/at each width. The difference is only the category label block (26.5k pixels, the textures), and every page keeps its height.Category labels: the layout holds at 375, 768 and 1280: same size, same position. The black text stays readable on the textures: the median background contrast is 7.3:1 or more, and the text is 36 px bold. Kinderen improves from 4.8:1 to 13.3:1.
axe-core 4.13 (WCAG 2.0/2.1/2.2 A+AA plus best-practice) on
/,/aanbod, Schilderkunst, Kunstkuur,/academieand/contact, at 1280 and 375. Fixed on every page where they appeared:landmark-one-main;region;link-name(the logo);page-has-heading-one(/and/aanbod);heading-order(Schilderkunst, Kunstkuur,/contact);frame-title(3 Vimeo, 7 or 8 maps)./aanbodand Kunstkuur now have 0 violations.Failed local requests: 6 on
/before, 0 after; 1 on each atelier before (mailerlite.js), 0 after.UI scanner (GL-028):
/passes in both builds.Keyboard walk, at 375, 768 and 1280:
mainthe thumbnails are never reached.Kunstkuur: 16 Tab stops before, 12 after. The 4 dead labels are gone from the Tab order.
Nav: Enter on "Academie" navigates, and focus stays on the link (on
mainit drops to the page).aria-currentfollows the page.Mobile toggle: Enter and Space toggle it. The label and
aria-expandedfollow, andaria-controlspoints at the open panel.Not checked:
Found, not changed (already on
main, outside this PR):/academieand the ateliers, the team photos: 16 and 1.opacity-50, which fails contrast (7 on/academieand on/contact).Screenshots:
qa-phase-2d/in the vault (category labels main/branch at 3 widths, lightbox with Sluiten, thumbnail focus, green button focus main/branch, newsletter on an atelier page).WCAG 4.1.2. The mobile menu toggle had an English label ("Toggle menu") and no state. It now has aria-expanded (false/true), aria-controls pointing at the menu panel (id="mobile-menu"), and the label "Menu openen" or "Menu sluiten". It is also type="button". No visible change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>- layouts/default.vue: the page content sits in <main>; header and footer stay outside it. Every page had no main landmark (axe landmark-one-main, region). - The logo link had no accessible name; it is now "Sint-Lukas Academie, startpagina". - / had no h1: the visible banner line ("Dé academie voor beeldende kunsten") becomes the h1, with the classes of the span it was. - /aanbod had no h1: the banner title ("Vind jouw atelier. Ontdek onze extra muros projecten.") is now an h1 when a banner has a title; banners without a title (atelier, academie, inschrijven, contact) stay a div. - Markdown "###" headings went straight from the page's h1 to h3 (ateliers, /academie, /inschrijven, /contact). ProseH3 now renders them as <h2 class="md-heading">, and main.css gives that class the look prose gave the h3 (size, weight, line height, margins, the sidebar's uppercase). All content headings are ###, so no level is lost. The video block's "Afgelopen trajecten" heading is an h2 too, with the same class. No visible change: the 22 routes at 375, 768 and 1280 are pixel-identical to main apart from the home page's category banners (an earlier commit). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>