Components
Newsletter signup
Let readers request publication email with clear form feedback and honest delivery expectations.
On this page
Purpose and placement
Let readers request publication email with clear form feedback and honest delivery expectations.
Anatomy
| Part | Behavior |
|---|---|
| Form | Email input, call to action and contextual description. |
| Feedback | Pending, success and error text. |
| Verification | Optional Turnstile capability configured at the boundary. |
Configuration and contract
| Input or decision | Implementation |
|---|---|
| Variants | footer or landing. |
| turnstileSiteKey | Optional configuration for verification. |
| Success contract | A successful response requires both response.ok and payload.ok. |
States and feedback
- Idle form is captured; empty input uses native constraints.
- Pending transition and response error/success are implemented but actual delivery is excluded.
- Failures retain the entered values.
Usage rules
- Do not show success simply because the request completed.
- Describe what subscription means before submit.
- Use a safe test inbox and explicit provider sandbox for end-to-end testing.
Accessibility and verification
Verify email input naming, error association, status announcements and Turnstile alternatives. No subscriber address or live subscription is included in the capture fixtures.
Source references
| File | Responsibility |
|---|---|
| components/newsletter-signup-form.tsx | Audited Townwell implementation; use this file when extending this interface. |
| components/turnstile-widget.tsx | Audited Townwell implementation; use this file when extending this interface. |
| lib/newsletter-landing.ts | Audited Townwell implementation; use this file when extending this interface. |
Examples from the app
Actual Boise Today and Townwell UI with synthetic editorial, business, review, media metadata and analytics. Existing Boise imagery; no live data changes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-07 · Revision ce8bc72b96da · Documentation v0.1