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
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
- Fork the repo → clone your fork → branch from
main
git pull upstream main — ensure your branch is up to date
- Make changes → push to your fork → open PR against
int-money/landing-page:main
See CONTRIBUTING.md and README for full details.
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-liveregions to be announced to assistive technology users.Requirements
aria-live="polite"region for waitlist form status messagesImplementation Guidelines
aria-live="polite"div or userole="status"Testing / Validation
Cmd + F5to enable, navigate the form🚨 Rules of Engagement — Read carefully before you start
pnpm buildlocally before pushing..mp4,.mov,.gif, or Loom/YouTube link) showing your changes in action..mdfiles generated by AI tools (implementation docs, summaries, checklists). Do NOT add AI tool folders (.kiro,.cursor,.aider, etc.).mainbefore opening your PR — Your branch MUST be rebased/merged with the latestmain.Atomic Commits (Conventional Commits)
Every commit must follow the Conventional Commits spec:
Types:
feat,fix,refactor,docs,style,test,chore,perf,ciEach commit = one logical change. No bundling unrelated changes. No
WIPorfixupcommits 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:
components/atoms/) — indivisible UI primitives (Button, Card, Badge)components/molecules/) — small groups of atoms (SectionHeader, FeatureChip)components/organisms/) — complex sections (Navbar, Footer, HeroSection)components/templates/) — page-level layout shellscomponents/providers/) — context providersDo not use barrel exports (
index.ts). Use direct file imports.Fork Workflow
maingit pull upstream main— ensure your branch is up to dateint-money/landing-page:mainSee CONTRIBUTING.md and README for full details.