Marketing

Newsletter CTA

Premium newsletter callout composed from typed Proa form and button primitives.

Open Markdown
The Proa Dispatch

Build sharper interfaces, one useful note at a time.

A concise field guide to Rust UI architecture, accessible component design, and the details that make products feel finished.

  • ✓One thoughtful email monthly
  • ✓Practical source examples
  • ✓No launch-week noise

Join 4,800+ product builders

Get the next issue and a compact server-rendering checklist in your inbox.

No spam. Unsubscribe in one click. By subscribing, you agree to receive product education from Proa.

Read by teams building serious Rust products.

FreeNewsletter CTA

Premium newsletter callout composed from typed Proa form and button primitives.

Browse block source
newsletter_cta.rs
// SPDX-FileCopyrightText: 2026 Proa Labs, Inc.
// SPDX-License-Identifier: (MIT OR Apache-2.0) AND MIT

// Adapted from MIT-licensed sources:
// - Tailark, `packages/dusk-kit/blocks/call-to-action/three/index.tsx`
//   https://github.com/tailark/blocks @ 8eadeb3389ccccc4bfc4a10bca959c1b39e47b71 (MIT License)
// - Tailark, `packages/veil-kit/blocks/call-to-action/three/index.tsx`
//   https://github.com/tailark/blocks @ 8eadeb3389ccccc4bfc4a10bca959c1b39e47b71 (MIT License)
// - TWBlocks, `blocks/cta/cta1.tsx`
//   https://github.com/tommyjepsen/twblocks @ ff88cb951dab0dc01198b6570ec5f5cf21250d45 (MIT License)
//! Newsletter CTA block — a premium signup panel with typed form primitives.

use proa_macros::html_sync;
use proa_ui::{
    Avatar, AvatarFallback, AvatarShape, AvatarSize, Badge, BadgeVariant, Button, ButtonSize, Card,
    Input, InputSize, InputType, Label,
};

const PROMISES: &[&str] = &[
    "One thoughtful email monthly",
    "Practical source examples",
    "No launch-week noise",

Search

Type at least 2 characters

Customize

Make it yours

Palette

Radius

Overview
Components
Settings

Build your own

Themed Proa UI surface

Preview
Components52
RecipesTyped
customer-portal