# CTA Newsletter

> Newsletter capture with an accessible form and honest numbers.

A shadcn/ui block from the [@blockforge](https://blockforge.terravidhal.me) registry, listed on [shadcn.exchange](https://shadcn.exchange/r/blockforge/cta-newsletter).

- Page, with a live preview: https://shadcn.exchange/r/blockforge/cta-newsletter
- Screenshot: https://abzjhwgwpdpz7ua5.public.blob.vercel-storage.com/shots/blockforge/cta-newsletter-light-d57af658cad1840d.png
- Registry item: https://blockforge.terravidhal.me/r/cta-newsletter.json
- Categories: cta
- Listed: 2026-10-13, source last changed 2026-10-13

## Install

```bash
npx shadcn@latest add https://blockforge.terravidhal.me/r/cta-newsletter.json
```

Run it in a project that has shadcn/ui set up. It adds the files below and installs what they depend on.

## Dependencies

- Registry items: `button`

## Files

### `registry/blocks/cta-newsletter.tsx`

```tsx
import { Button } from "@/components/ui/button";

export default function CtaNewsletter() {
  return (
    <section className="border-y border-border/60 bg-muted/30">
      <div className="mx-auto w-full max-w-2xl px-6 py-16 text-center sm:py-20">
        <h2 className="text-2xl font-semibold tracking-tight text-balance sm:text-3xl">
          One email a week, worth opening
        </h2>
        <p className="mx-auto mt-3 max-w-md text-muted-foreground">
          What we shipped, what broke, and what we learned — written by the
          engineers, not the marketing team.
        </p>

        <form className="mx-auto mt-8 flex max-w-md flex-col gap-2 sm:flex-row">
          <label htmlFor="newsletter-email" className="sr-only">
            Email address
          </label>
          <input
            id="newsletter-email"
            type="email"
            autoComplete="email"
            placeholder="you@company.com"
            className="h-9 w-full flex-1 rounded-lg border border-input bg-background px-3 text-sm outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50"
          />
          <Button type="submit" className="sm:shrink-0">
            Subscribe
          </Button>
        </form>

        <p className="mt-4 font-mono text-xs text-muted-foreground tabular-nums">
          12,400 developers read it · unsubscribe anytime
        </p>
      </div>
    </section>
  );
}
```
