8-bit CTA2
8bitcn/cta2FreeBlock
Persona use case cards with CTAs.
Install it
npx shadcn@latest add https://www.8bitcn.com/r/cta2.jsonSource
1import type { ReactNode } from "react";23import { cn } from "@/lib/utils";45import { Badge } from "@/components/ui/8bit/badge";6import { Button } from "@/components/ui/8bit/button";7import {8 Card,9 CardContent,10 CardDescription,11 CardHeader,12 CardTitle,13} from "@/components/ui/8bit/card";1415import "@/components/ui/8bit/styles/retro.css";1617export interface UseCase {18 badge?: string;19 cta: string;20 description: string;21 href?: string;22 icon: ReactNode;23 title: string;24}2526interface CTA2Props {27 className?: string;28 description?: string;29 items?: UseCase[];30 title?: string;31}3233const defaultItems: UseCase[] = [34 {35 icon: "DEV",36 title: "Indie Developers",37 description: "Ship landing pages for your side projects that actually stand out from the Next.js template crowd.",38 cta: "START BUILDING",39 },40 {41 icon: "MKT",42 title: "Marketers",43 description: "Create campaign pages that stop the scroll. Retro aesthetics convert better than you think.",44 cta: "SEE TEMPLATES",45 badge: "POPULAR",46 },47 {48 icon: "GME",49 title: "Game Developers",50 description: "Build game websites that match your product. Pixel-perfect UI for pixel-perfect games.",51 cta: "VIEW GAME BLOCKS",52 },53 {54 icon: "DSN",55 title: "Designers",56 description: "Prototype unique interfaces fast. Every component is customizable down to the pixel.",57 cta: "EXPLORE COMPONENTS",58 },59];6061export default function CTA2({62 title = "Built For You",63 description = "No matter what you're building",64 items = defaultItems,65 className,66}: CTA2Props) {67 return (68 <section className={cn("flex justify-center w-full px-4 py-16", className)}>69 <div className="mx-auto max-w-4xl">70 {(title || description) && (71 <div className="mb-10 text-center">72 {title && (73 <h2 className="retro mb-3 font-bold text-2xl tracking-tight md:text-3xl">74 {title}75 </h2>76 )}77 {description && (78 <p className="retro text-muted-foreground text-[9px]">{description}</p>79 )}80 </div>81 )}8283 <div className="grid gap-x-6 gap-y-1 px-2 sm:grid-cols-2 sm:px-0">84 {items.map((item) => (85 <Card className="relative flex flex-col" key={item.title}>86 {item.badge && (87 <div className="absolute top-2 right-4 z-10">88 <Badge className="text-[9px]">{item.badge}</Badge>89 </div>90// … truncated
What it pulls in
Other registry items
Files it writes
More from 8bitcn
All 121 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| 8-bit Advanced 1advanced1 | 8bitcn | Blocks | Free | no deps · 3 files | |
| 8-bit Advanced 2advanced2 | 8bitcn | Blocks | Free | no deps · 5 files | |
| 8-bit Advanced 3advanced3 | 8bitcn | Blocks | Free | no deps · 6 files | |
| 8-bit Audio Settingsaudio-settings | 8bitcn | Blocks | Free | 2 deps · 7 files | |
| 8-bit Chapter Introchapter-intro | 8bitcn | Blocks | Free | no deps · 3 files | |
| 8-bit Character Sheetcharacter-sheet | 8bitcn | Blocks | Free | no deps · 9 files | |
| 8-bit Chartchart | 8bitcn | Blocks | Free | no deps · 3 files | |
| 8-bit Chart Area Stepchart-area-step | 8bitcn | Blocks | Free | no deps · 3 files |
