Welcome to Vanilla Breeze
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
Call to action section patterns for landing pages and marketing sites. Centered banners, split layouts, and background image CTAs.
Call to Action (CTA) sections are critical conversion points on marketing pages. They typically appear after feature sections or at the bottom of landing pages, prompting users to take the next step. These patterns use data-layout="cover" for vertical centering and data-layout="center" for horizontal alignment.
Key features:
data-layout="cover"data-layout="cluster"The most common CTA pattern: centered headline, supporting text, and action buttons. Perfect for page endings and conversion sections.
<section class="cta" data-layout="cover" data-layout-min="50vh" data-layout-padding="xl"> <div class="cta-content" data-layout="center" data-layout-max="normal" data-layout-gap="l"> <h2>Ready to get started?</h2> <p class="lead"> Join thousands of developers building better interfaces with Vanilla Breeze. Start your free trial today, no credit card required. </p> <nav> <ul data-layout="cluster" data-layout-justify="center" data-layout-gap="m"> <li><a href="/signup/" class="button large">Start Free Trial</a></li> <li><a href="/contact/" class="button large secondary">Talk to Sales</a></li> </ul> </nav> </div></section>
Text on one side, form or image on the other. Uses data-layout="sidebar" for a flexible two-column layout that stacks on narrow viewports. Great for newsletter signups and lead capture.
<section class="cta" data-layout="cover" data-layout-min="50vh" data-layout-padding="xl"> <div data-layout="center" data-layout-max="wide"> <div data-layout="sidebar" data-layout-gap="2xl" data-layout-sidebar-width="wide" data-layout-content-min="50"> <div data-layout="stack" data-layout-gap="l"> <h2>Get notified when we launch</h2> <p class="lead"> Be the first to know when new features are released. Sign up for early access and exclusive updates. </p> <form class="inline-form" action="/subscribe" method="POST"> <form-field> <input type="email" name="email" required autocomplete="email" placeholder="Enter your email" aria-label="Email address" /> </form-field> <button type="submit">Notify Me</button> </form> <p class="text-sm text-muted"> We respect your privacy. Unsubscribe at any time. </p> </div> <img src="/images/cta-illustration.png" alt="Product illustration" width="500" height="375" loading="lazy" /> </div> </div></section>
Add these styles for the inline email form:
.inline-form { display: flex; gap: var(--size-s); flex-wrap: wrap;} .inline-form input { flex: 1; min-width: 200px;}
Full-width background image with a dark overlay for text readability. The overlay uses --color-overlay-strong from design tokens. Great for creating visual impact.
<section class="cta cta-with-bg" data-layout="cover" data-layout-min="50vh" data-layout-padding="xl"> <div class="cta-content" data-layout="center" data-layout-max="normal" data-layout-gap="l"> <h2>Transform your workflow today</h2> <p class="lead"> Stop struggling with complex toolchains. Vanilla Breeze gives you everything you need to build beautiful, responsive interfaces. </p> <nav> <ul data-layout="cluster" data-layout-justify="center" data-layout-gap="m"> <li><a href="/signup/" class="button large">Get Started Free</a></li> <li><a href="/pricing/" class="button large ghost">See Pricing</a></li> </ul> </nav> </div></section>
Add these styles to support background images with overlay:
.cta-with-bg { background-image: url('/images/cta-bg.jpg'); background-size: cover; background-position: center; position: relative;} .cta-with-bg::before { content: ""; position: absolute; inset: 0; background: var(--color-overlay-strong);} .cta-with-bg > * { position: relative; color: var(--color-white);}
For buttons over dark backgrounds, add these ghost button overrides:
.cta-with-bg .button.ghost { color: var(--color-white); border-color: var(--color-white);} .cta-with-bg .button.ghost:hover { background: rgba(255, 255, 255, 0.1);}
Common data attributes for CTA sections:
| Layout | Attribute | Values | Description |
|---|---|---|---|
data-layout="cover" |
data-layout-min |
CSS length (e.g., 50vh, 300px) |
Minimum height of the CTA section. |
data-layout="cover" |
data-layout-padding |
none s m l xl |
Padding inside the cover. |
data-layout="center" |
data-layout-max |
narrow normal wide prose |
Maximum content width. |
data-layout="sidebar" |
data-layout-sidebar-width |
narrow normal wide |
Width of the sidebar column. |
data-layout="cluster" |
data-layout-justify |
start center end between |
Horizontal alignment of buttons. |
--color-overlay-strong for dark overlays.50vh or less for CTAs to differentiate from full-height hero sections.data-layout="sidebar".Above-the-fold hero sections
Cover layout element documentation
Center layout element documentation
Button component documentation