Innovations
heroes /

Centered Bold Hero

Centered hero with large gradient headline, badge pill, dual CTAs, and social proof. Clean and confident.

Preview

Source

tsx
"use client";

import { motion } from "framer-motion";
import { ArrowRight, Zap } from "lucide-react";
import { Button } from "@/components/ui/button";

export default function CenteredBoldHero() {
  return (
    <section className="relative min-h-screen flex items-center justify-center overflow-hidden bg-background">
      {/* Subtle radial background glow */}
      <div className="absolute inset-0 flex items-center justify-center pointer-events-none">
        <div className="w-[800px] h-[600px] bg-primary/5 rounded-full blur-3xl" />
      </div>

      {/* Grid decoration */}
      <div
        className="absolute inset-0 opacity-[0.03] pointer-events-none"
        style={{
          backgroundImage:
            "linear-gradient(var(--color-foreground) 1px, transparent 1px), linear-gradient(90deg, var(--color-foreground) 1px, transparent 1px)",
          backgroundSize: "60px 60px",
        }}
      />

      <div className="relative z-10 container mx-auto px-6 text-center max-w-4xl">
        <motion.div
          initial={{ opacity: 0, y: 30 }}
          animate={{ opacity: 1, y: 0 }}
          transition={{ duration: 0.6, ease: "easeOut" }}
          className="flex flex-col items-center gap-6"
        >
          {/* Badge pill */}
          <motion.span
            initial={{ opacity: 0, scale: 0.8 }}
            animate={{ opacity: 1, scale: 1 }}
            transition={{ duration: 0.4, delay: 0.1 }}
            className="inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-widest text-primary bg-primary/10 border border-primary/20 rounded-full px-4 py-2"
          >
            <Zap className="w-3.5 h-3.5" />
            Introducing v2.0
          </motion.span>

          {/* Headline */}
          <motion.h1
            initial={{ opacity: 0, y: 20 }}
            animate={{ opacity: 1, y: 0 }}
            transition={{ duration: 0.6, delay: 0.2 }}
            className="text-5xl sm:text-6xl lg:text-7xl font-extrabold tracking-tight text-foreground leading-[1.05]"
          >
            The platform that
            <br />
            makes{" "}
            <span className="bg-gradient-to-r from-primary via-violet-500 to-fuchsia-500 bg-clip-text text-transparent">
              everything click
            </span>
          </motion.h1>

          {/* Subtext */}
          <motion.p
            initial={{ opacity: 0, y: 20 }}
            animate={{ opacity: 1, y: 0 }}
            transition={{ duration: 0.6, delay: 0.3 }}
            className="text-lg sm:text-xl text-muted-foreground max-w-2xl leading-relaxed"
          >
            Stop cobbling together tools that don't talk to each other. One
            workspace for design, development, and delivery — unified, fast, and
            beautifully designed.
          </motion.p>

          {/* CTAs */}
          <motion.div
            initial={{ opacity: 0, y: 20 }}
            animate={{ opacity: 1, y: 0 }}
            transition={{ duration: 0.6, delay: 0.4 }}
            className="flex flex-col sm:flex-row items-center gap-3 pt-2"
          >
            <Button size="lg" className="gap-2 text-base min-w-[180px]">
              Start for free
              <ArrowRight className="w-4 h-4" />
            </Button>
            <Button size="lg" variant="outline" className="text-base min-w-[180px]">
              See how it works
            </Button>
          </motion.div>

          {/* Social proof */}
          <motion.div
            initial={{ opacity: 0 }}
            animate={{ opacity: 1 }}
            transition={{ duration: 0.6, delay: 0.55 }}
            className="flex flex-col sm:flex-row items-center gap-4 pt-4 text-sm text-muted-foreground"
          >
            <div className="flex -space-x-2">
              {[5, 12, 23, 33, 44].map((n) => (
                <img
                  key={n}
                  src={`https://i.pravatar.cc/32?img=${n}`}
                  alt="User avatar"
                  className="w-8 h-8 rounded-full border-2 border-background"
                />
              ))}
            </div>
            <span>
              Trusted by{" "}
              <strong className="text-foreground font-semibold">12,000+</strong>{" "}
              teams worldwide
            </span>
          </motion.div>
        </motion.div>
      </div>
    </section>
  );
}
Claude Code Instructions

CLI Install

npx innovations add centered-bold

Where to use it

Place this as the first visible section on your homepage, centered in the viewport. In Astro (src/pages/index.astro): import CenteredBoldHero from '../components/innovations/heroes/centered-bold'; <CenteredBoldHero client:load /> In Next.js (app/page.tsx): import CenteredBoldHero from '@/components/innovations/heroes/centered-bold'; // Use as the first section in the page return Edit the headline text, gradient key word, badge label, subtext, and CTA labels directly in the component. The gradient text span targets the most impactful word — swap it for your value prop.