About this set
The four screens around a double opt-in newsletter, which most kits leave out. Check your inbox shows an envelope illustration, the address the link went to, how long the link lasts, three numbered steps, a Resend the email button and a link to use a different address. Resending confirms in a polite status message and starts a 30 second cooldown on the button. Already subscribed tells someone who signs up twice that there is nothing to do, with their address, start date and send day, and links to manage preferences or read the latest issue. Manage preferences has switch rows for each list and a frequency choice, with a save button that confirms in a status message and an unsubscribe-from-everything link. Unsubscribe offers a plain choice between leaving and receiving less, an optional reason, a neutral Confirm button and a Keep my subscription link; afterwards it confirms and lets a mistaken click be undone. There is no guilt-trip copy anywhere: leaving is as easy as joining. A short vanilla script handles the demo states; nothing is sent.
What’s included
- Resend button with a status message and 30 second cooldown
- Already subscribed screen with subscription details
- Preference switches with role="switch" and a frequency choice
- Unsubscribe with a send me less option and an undo
- Bootstrap version uses .form-switch, .form-select, .btn and .card
Accessibility
Status messages for resend and save sit in role="status" regions, and the resend button stays focusable with aria-disabled during its cooldown. Preference toggles are checkboxes with role="switch" inside their labels; choices are grouped in fieldsets with legends, and the optional reason select has a visible label. The unsubscribe result is focused when it appears, focus rings are visible, and transitions switch off under prefers-reduced-motion.
Customise it
Set --do-accent, --do-accent-dark and --do-tint on .do for the brand colour, --do-ok for confirmations and --do-line for borders. The envelope is an inline SVG you can recolour. In Tailwind change the do-* colours in @theme.






