Skip to content

fix: add proper aria-live region for dynamic content updates #82

Description

@pragmaticAweds

Context

When the waitlist form submits and shows success/error states, screen readers are not notified of the state change. Dynamic content updates require aria-live regions to be announced to assistive technology users.

Requirements

  • Add aria-live="polite" region for waitlist form status messages
  • Announce success message after form submission
  • Announce error messages when validation fails or API errors occur
  • Do not announce loading states (too noisy)

Implementation Guidelines

  • Add a visually hidden aria-live="polite" div or use role="status"
  • Update its text content when the form state changes
  • Place it within the waitlist modal
  • Test with VoiceOver (Mac) or NVDA (Windows)

Testing / Validation

  • Submit form → screen reader announces "Successfully joined the waitlist"
  • Form error → screen reader announces the error message
  • Test with VoiceOver: Cmd + F5 to enable, navigate the form

🚨 Rules of Engagement — Read carefully before you start

These are non-negotiable. Failure to meet ANY of these will result in your PR being CLOSED without review.

# Rule Consequence
1 Build MUST pass — Run pnpm build locally before pushing. ❌ PR closed
2 Screen recording REQUIRED — Attach a video (.mp4, .mov, .gif, or Loom/YouTube link) showing your changes in action. ❌ PR closed
3 No AI-generated markdown files or folders — Do NOT commit .md files generated by AI tools (implementation docs, summaries, checklists). Do NOT add AI tool folders (.kiro, .cursor, .aider, etc.). ❌ PR closed
4 Do NOT exceed the ETA — If a deadline is set, deliver before it. ❌ PR closed
5 Pull main before opening your PR — Your branch MUST be rebased/merged with the latest main. ❌ PR closed

Atomic Commits (Conventional Commits)

Every commit must follow the Conventional Commits spec:

<type>(<scope>): <short description>

Types: feat, fix, refactor, docs, style, test, chore, perf, ci

Each commit = one logical change. No bundling unrelated changes. No WIP or fixup commits in the final PR. Every commit should build and pass lint on its own.

Atomic Design Principles

This project follows Atomic Design. Place components in the correct level:

  • Atoms (components/atoms/) — indivisible UI primitives (Button, Card, Badge)
  • Molecules (components/molecules/) — small groups of atoms (SectionHeader, FeatureChip)
  • Organisms (components/organisms/) — complex sections (Navbar, Footer, HeroSection)
  • Templates (components/templates/) — page-level layout shells
  • Providers (components/providers/) — context providers

Do not use barrel exports (index.ts). Use direct file imports.

Fork Workflow

  1. Fork the repo → clone your fork → branch from main
  2. git pull upstream main — ensure your branch is up to date
  3. Make changes → push to your fork → open PR against int-money/landing-page:main

See CONTRIBUTING.md and README for full details.

Metadata

Metadata

Assignees

Labels

accessibilityAccessibility improvementsstellar-waveIssues for the Stellar Wave open-source initiative

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions