Blocks
CTA Section
A centered call-to-action section composing Heading, Text, and Button. The first marketing block, establishing the marketing category convention.
Preview
Ready to get started?
Join thousands of teams using Visor to build better interfaces.
Get Started FreeInstallation
npx visor add --block cta-sectionThis copies files into your project:
blocks/cta-section/cta-section.tsx— the block componentblocks/cta-section/cta-section.module.css— the styles
Usage
import { CtaSection } from '@/blocks/cta-section/cta-section';
export default function MarketingPage() {
return (
<CtaSection
heading="Ready to get started?"
description="Join thousands of teams using Visor to build better interfaces."
buttonText="Get Started Free"
buttonHref="/signup"
/>
);
}With click handler
<CtaSection
heading="Upgrade your plan"
description="Unlock premium features and priority support."
buttonText="Upgrade Now"
onButtonClick={() => openUpgradeModal()}
/>Composition
This block composes three Visor primitives:
- Heading — Semantic
h2with theme-aware typography - Text — Body copy with secondary color token
- Button — Primary action, renders as
<a>whenbuttonHrefis provided
Props
| Prop | Type | Required | Description |
|---|---|---|---|
heading | string | Yes | The main heading text |
description | string | No | Supporting body copy below the heading |
buttonText | string | Yes | Label for the CTA button |
buttonHref | string | No | If provided, renders the button as an anchor tag |
onButtonClick | () => void | No | Click handler for button (used when no buttonHref) |
className | string | No | Additional CSS class applied to the root <section> |
Configuration Panel
A floating, glassmorphic configuration panel for organizing controls into labeled sections with collapse animation and positional anchoring.
Design System Deck
A complete, registry-driven design system presentation deck with navigable slides, dot navigation, keyboard nav, and fullscreen support.