Web InnoventixFreeCode

Aurora Blobs Background

Original · free

An animated hero section with soft, ever-drifting aurora gradient blobs floating behind staggered, blur-in content.

byWeb InnoventixReact + Tailwind
animated backgroundaurora gradientframer motion herogradient blobsanimated hero sectionblur reveal
Open

Copy prompt gives Claude Code, Cursor or v0 a ready-to-paste prompt that recreates this exact component.

npx shadcn@latest add https://webinnoventix.com/r/bg-aurora-blobs.json
bg-aurora-blobs.tsx
"use client";

import { motion, useReducedMotion, type Variants } from "motion/react";

const container: Variants = {
  hidden: {},
  show: { transition: { staggerChildren: 0.12, delayChildren: 0.15 } },
};

const item: Variants = {
  hidden: { opacity: 0, y: 26, filter: "blur(6px)" },
  show: {
    opacity: 1,
    y: 0,
    filter: "blur(0px)",
    transition: { duration: 0.7, ease: [0.16, 1, 0.3, 1] },
  },
};

export default function BgAuroraBlobs() {
  const reduce = useReducedMotion();

  const drift = (x: number, y: number, s: number, duration: number) =>
    reduce
      ? undefined
      : {
          x: [0, x, 0],
          y: [0, y, 0],
          scale: [1, s, 1],
          transition: {
            duration,
            repeat: Infinity,
            ease: "easeInOut" as const,
          },
        };

  return (
    <section className="relative isolate flex min-h-[640px] w-full items-center justify-center overflow-hidden bg-slate-50 px-6 py-24 dark:bg-slate-950">
      {/* moving aurora field */}
      <div
        aria-hidden="true"
        className="pointer-events-none absolute inset-0 -z-10 overflow-hidden"
      >
        <motion.div
          animate={drift(90, -70, 1.15, 15)}
          className="absolute -left-32 -top-24 h-[30rem] w-[30rem] rounded-full bg-fuchsia-300/50 mix-blend-multiply blur-3xl dark:bg-fuchsia-600/30 dark:mix-blend-screen"
        />
        <motion.div
          animate={drift(-80, 60, 1.2, 18)}
          className="absolute -right-24 top-8 h-[26rem] w-[26rem] rounded-full bg-sky-300/50 mix-blend-multiply blur-3xl dark:bg-sky-500/30 dark:mix-blend-screen"
        />
        <motion.div
          animate={drift(60, 80, 1.1, 21)}
          className="absolute -bottom-24 left-1/3 h-[24rem] w-[24rem] rounded-full bg-violet-300/50 mix-blend-multiply blur-3xl dark:bg-indigo-500/30 dark:mix-blend-screen"
        />
        <motion.div
          animate={drift(-70, -50, 1.18, 16)}
          className="absolute -bottom-16 right-1/4 h-[22rem] w-[22rem] rounded-full bg-emerald-300/40 mix-blend-multiply blur-3xl dark:bg-emerald-500/25 dark:mix-blend-screen"
        />
      </div>

      {/* soft vignette to seat the content */}
      <div
        aria-hidden="true"
        className="pointer-events-none absolute inset-0 -z-10 bg-[radial-gradient(ellipse_at_center,transparent_38%,rgba(248,250,252,0.72)_100%)] dark:bg-[radial-gradient(ellipse_at_center,transparent_32%,rgba(2,6,23,0.75)_100%)]"
      />

      <motion.div
        variants={container}
        initial="hidden"
        whileInView="show"
        viewport={{ once: true, amount: 0.3 }}
        className="relative mx-auto max-w-2xl text-center"
      >
        <motion.span
          variants={item}
          className="inline-flex items-center gap-2 rounded-full border border-slate-200/70 bg-white/70 px-4 py-1.5 text-sm font-medium text-slate-600 shadow-sm backdrop-blur dark:border-white/10 dark:bg-white/5 dark:text-slate-300"
        >
          <span className="relative flex h-2 w-2">
            <span className="absolute inline-flex h-full w-full animate-ping rounded-full bg-emerald-400 opacity-75" />
            <span className="relative inline-flex h-2 w-2 rounded-full bg-emerald-500" />
          </span>
          Now in open beta
        </motion.span>

        <motion.h1
          variants={item}
          className="mt-6 text-4xl font-semibold tracking-tight text-slate-900 sm:text-6xl dark:text-white"
        >
          Build brighter with living gradients
        </motion.h1>

        <motion.p
          variants={item}
          className="mx-auto mt-5 max-w-xl text-base leading-relaxed text-slate-600 sm:text-lg dark:text-slate-400"
        >
          A soft, ever-moving aurora backdrop that keeps your hero feeling alive
          without stealing attention from the words that matter.
        </motion.p>

        <motion.div
          variants={item}
          className="mt-9 flex flex-col items-center justify-center gap-3 sm:flex-row"
        >
          <a
            href="#"
            className="group inline-flex items-center gap-2 rounded-full bg-slate-900 px-6 py-3 text-sm font-semibold text-white shadow-lg transition hover:bg-slate-700 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-900 focus-visible:ring-offset-2 focus-visible:ring-offset-slate-50 dark:bg-white dark:text-slate-900 dark:hover:bg-slate-200 dark:focus-visible:ring-white dark:focus-visible:ring-offset-slate-950"
          >
            Get started free
            <svg
              viewBox="0 0 24 24"
              fill="none"
              stroke="currentColor"
              strokeWidth={2}
              strokeLinecap="round"
              strokeLinejoin="round"
              aria-hidden="true"
              className="h-4 w-4 transition group-hover:translate-x-0.5"
            >
              <path d="M5 12h14M13 6l6 6-6 6" />
            </svg>
          </a>
          <a
            href="#"
            className="inline-flex items-center gap-2 rounded-full border border-slate-300 bg-white/60 px-6 py-3 text-sm font-semibold text-slate-700 backdrop-blur transition hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-400 dark:border-white/15 dark:bg-white/5 dark:text-slate-200 dark:hover:bg-white/10"
          >
            Watch the demo
          </a>
        </motion.div>
      </motion.div>
    </section>
  );
}

Dependencies

motion

Licence

Built by Web Innoventix. Free for personal and commercial use, no attribution required.

Built by Web Innoventix

Need a custom interface, a full website, or SEO that gets you cited by AI? We design, build and rank it end to end.

Get a free quote

Similar components

Browse all →
Retro Perspective Grid

Retro Perspective Grid

Original

A launch and waitlist section set over an infinite neon grid that scrolls into a glowing horizon with rising particles.

Conic Gradient Flow

Conic Gradient Flow

Original

A frosted hero backed by twin counter-rotating conic gradients, with flowing gradient text and an animated gradient-border stat card.

Spotlight Follow Background

Spotlight Follow Background

Original

A dot-grid section where a spring-eased spotlight follows the cursor and reveals a hidden lattice of coloured dots.

Dot Pattern Background

Dot Pattern Background

pattern.tsx

A reusable animated background for React and Tailwind: dot pattern background.

Flickering Grid Background

Flickering Grid Background

grid.tsx

A reusable animated background for React and Tailwind: flickering grid background.

Grid Pattern Background

Grid Pattern Background

pattern.tsx

A reusable animated background for React and Tailwind: grid pattern background.

Retro Grid Background

Retro Grid Background

grid.json

A reusable animated background for React and Tailwind: retro grid background.

Spotlight Hero

Spotlight Hero

Original

A centred hero with a soft radial spotlight, badge and dual call-to-action.

Split Hero

Split Hero

Original

A two-column hero pairing a headline and CTAs with a product mock and social proof.

Gradient Spotlight Hero

Gradient Spotlight Hero

Original

A minimal centred hero with a soft gradient-mesh backdrop, announcement pill and dual call-to-action buttons.

App Preview Hero

App Preview Hero

Original

A centred hero that pairs headline copy with a realistic product dashboard mock built entirely from markup, complete with browser chrome and a floating notification card.

Waitlist Capture Hero

Waitlist Capture Hero

Original

A dark, focused hero with an inline email capture form and avatar social proof, ready for pre-launch waitlists.