Blocks
CTA Section
A centered call-to-action section composing Heading, Text, and Button. The first marketing block, establishing the marketing category convention.
Preview
Installation
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.