docs: replace waitlist form with Loops.so integration (#447)
## Summary Replace the FormSubmit.co waitlist form on the website with a Loops.so newsletter form integration. ## Changes ### Backend - **FormSubmit.co** ``` ``` **Loops.so** (`https://app.loops.so/api/newsletter-form/...`) - Content-Type: `application/x-www-form-urlencoded` (Loops requirement) - Progressive enhancement: `action` + `method` on `<form>` so native POST works without JS ### UI/UX - **Three-view state system**: form (default), success, error — only one visible at a time via `.cta-form-view`/`.show` toggle - **Retry support**: error view shows a "Try Again" button that restores the form with email preserved - **Loading state**: button shows "Sending..." and disables during fetch, restores in `finally` - **Rate limiting**: 60s cooldown via localStorage timestamp (matches Loops embed behavior) ### Robustness - `res.json()` failure (non-JSON response like 502) caught cleanly — falls to network error - `localStorage` wrapped in try/catch for Safari private browsing compatibility - Rate-limit timestamp only recorded on **success** (not on API error responses) - Email input preserved on error (only cleared on success) - "Email already on list" treated as success ### Accessibility - `aria-live="polite"` on success view for screen reader announcements - `role="alert"` on error view for immediate screen reader notification - Focus management: retry button focused on error, email input focused on retry ### Styling - All inline styles from Loops embed stripped — uses existing CSS variables (`--g0`, `--c0`, `--c2`, etc.) - No Inter font import — inherits site's DM Sans - New classes: `.cta-form-view`, `.cta-error`, `.cta-back`, `.cta-submit:disabled` - Mobile responsive: `.cta-back` added to full-width rule - Editorial aesthetic preserved (2px border-radius, uppercase letter-spacing, cream/green palette)
B
Burak Yigit Kaya committed
8dfe1f1cf5ed03b0ad501404fbe8b93199cc8706
Parent: 398be4c
Committed by GitHub <noreply@github.com>
on 5/21/2026, 10:24:12 AM