forked from molecule-ai/molecule-core
Five fixes for the terms-acceptance modal: 1. CRITICAL: aria-hidden="true" on the modal's wrapper hid the dialog AND its descendants from screen readers. The entire ToS-acceptance flow was invisible to AT users. Removed the false aria-hidden — the wrapper is just a backdrop, the dialog inside still has role=dialog aria-modal=true so AT recognises it correctly. 2. Added focus management: when the modal opens, focus moves to the "I agree" button (WCAG 2.4.3). Hard gate so no focus-trap loop or Esc-dismiss — the user must accept or close the page. 3. "I agree" button hovered LIGHTER (bg-emerald-500 over bg-emerald-600). On white text that drops below AA — same trap fixed in ApprovalBanner and ConfirmDialog. Flipped to bg-emerald-700. 4. Added focus-visible ring on the "I agree" button. Was relying on browser default outline only. 5. Privacy/Terms links: hardcoded text-sky-400 → text-accent (theme- aware) + hover:text-accent-strong (was hover:text-sky-400, no-op same color) + focus-visible ring. Added aria-describedby pointing to the body div so SR can read the description with the title. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| e2e | ||
| public | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| components.json | ||
| Dockerfile | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.ts | ||
| playwright.staging.config.ts | ||
| postcss.config.js | ||
| tsconfig.json | ||
| vitest.config.ts | ||