Skip to content

Fix SEO, accessibility, and mobile-text issues in events template - #701

Open
keren-viner wants to merge 1 commit into
wix:mainfrom
keren-viner:fix/events-a11y-seo
Open

Fix SEO, accessibility, and mobile-text issues in events template#701
keren-viner wants to merge 1 commit into
wix:mainfrom
keren-viner:fix/events-a11y-seo

Conversation

@keren-viner

Copy link
Copy Markdown
Contributor

Summary

Fixes from an AGENTS.md-standards audit of astro/events (SEO, accessibility, mobile responsiveness). Mobile responsiveness passed cleanly, so this PR covers the SEO and accessibility findings only.

SEO

  • events/[slug].astro: fall back to a title built from the event's own data when the SEO tags service fails to load, instead of shipping a page with no <title> at all.
  • index.astro / about.astro: stop hardcoding <Layout title=...> on main pages so Wix's dashboard-managed SEO middleware can own them (matches the documented cms-catalog pattern).

Accessibility

  • Restored a visible focus ring on .card (all: unset had wiped it) and .rsvp-field input (outline: none with no replacement).
  • RsvpForm: connected labels to inputs via htmlFor/id, added required/aria-required, wired aria-invalid/aria-describedby to the error message, moved focus to the first invalid field on submit, and prefilled name/email from the signed-in member instead of re-asking for known info.
  • Added aria-expanded to the mobile menu toggle, aria-labels on the header/footer nav landmarks, and real accessible names on the ticket quantity +/- buttons.
  • Formatted ticket prices with Intl.NumberFormat instead of concatenating currency + value@wix/events' Money type has no pre-formatted string field (unlike commerce's formattedAmount), so naive concatenation would misplace currency symbols/spacing in non-US locales.
  • Fixed color contrast on .body-copy, .muted, .card-action, .quote-sec, .footer-copy, and .tier-desc — several were rendering real content below the 4.5:1 minimum.
  • Bumped every text class that was under the 14px minimum (.error, .card-action, .tier-desc, .eyebrow, .pill.sm, .banner, .logout-btn, .card-name, .card-price, .rsvp-field label, .footer nav p) up to 14px. Left the 12px avatar-monogram initial alone since it's a decorative single-letter glyph, not body text.

Not addressed: the audit's hardcoded-aria-label/i18n finding — this repo has no i18n infrastructure in any Astro template (single-language customer sites), so that rule doesn't apply here as written.

Test plan

  • wix headless init --site-template events --template-path <copy-without-node_modules> per the repo's own testing instructions, then exercise: home page tab order and focus rings, mobile menu toggle (keyboard + screen reader), RSVP form validation/error announcement/focus, ticket picker quantity buttons and price display, About page contrast.

Addresses the findings from an AGENTS.md-standards audit of astro/events:

SEO
- events/[slug].astro: fall back to a title built from the event's own
  data when the SEO tags service fails to load, instead of shipping a
  page with no <title> at all.
- index.astro / about.astro: stop hardcoding <Layout title=...> on main
  pages so Wix's dashboard-managed SEO middleware can own them, matching
  the documented cms-catalog pattern.

Accessibility
- Layout.astro: restore a visible focus ring on .card (previously
  `all: unset` wiped it) and on .rsvp-field input (previously
  `outline: none` with no replacement).
- EventDetail.jsx (RsvpForm): connect labels to inputs via htmlFor/id,
  add required/aria-required, wire aria-invalid/aria-describedby to the
  error message, move focus to the first invalid field on submit, and
  prefill name/email from the signed-in member instead of re-asking.
- EventDetail.jsx / AppIsland.jsx: add aria-expanded to the mobile menu
  toggle, aria-label the header/footer nav landmarks, and give the
  ticket quantity +/- buttons real accessible names.
- EventDetail.jsx: format ticket prices with Intl.NumberFormat instead
  of concatenating currency + value (the events Money type has no
  formatted-string field, unlike commerce's formattedAmount).
- Layout.astro: fix color contrast on .body-copy, .muted, .card-action,
  .quote-sec, .footer-copy, and .tier-desc (several were rendering
  real content below the 4.5:1 minimum), and bump every text class
  under the 14px minimum (.error, .card-action, .tier-desc, .eyebrow,
  .pill.sm, .banner, .logout-btn, .card-name, .card-price,
  .rsvp-field label, .footer nav p) up to 14px.
@netlify

netlify Bot commented Aug 11, 2026

Copy link
Copy Markdown

👷 Deploy request for wix-commerce-ticketing-nextjs pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 5981815

@netlify

netlify Bot commented Aug 11, 2026

Copy link
Copy Markdown

👷 Deploy request for wix-appointments-subscriptions-nextjs pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 5981815

@netlify

netlify Bot commented Aug 11, 2026

Copy link
Copy Markdown

👷 Deploy request for wix-classes-subscriptions-nextjs pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 5981815

@netlify

netlify Bot commented Aug 11, 2026

Copy link
Copy Markdown

👷 Deploy request for wix-headless-example pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 5981815

@netlify

netlify Bot commented Aug 11, 2026

Copy link
Copy Markdown

👷 Deploy request for wix-cms-nextjs-template pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 5981815

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant