Skip to content

Stacked Type Hero

Oversized, tightly-stacked headline words that reveal in on mount — big type as sculpture.

Freeeditorialbrutalist
Category
Sections
Added
2026-08-14
Deps
1
Updated
2026-09-01
Preview
TypeLetteringSectionsComponentsPatterns

Props

Requires framer-motion
"use client";

import { motion } from "framer-motion";

const DEFAULT_WORDS = "Type, Lettering, Sections, Components, Patterns";

export function StackedTypeHero({
  words = DEFAULT_WORDS,
  accentWord = "Sections",
  align = "left",
}: {
  /** Comma-separated. One stacked line per word. */
  words?: string;
  /** Whichever line matches gets the accent colour. */
  accentWord?: string;
  align?: "left" | "center";
}) {
  const lines = words
    .split(",")
    .map((w) => w.trim())
    .filter(Boolean);

  return (
    <div
      className={
        "flex flex-col gap-1 py-10 " +
        (align === "center" ? "items-center text-center" : "items-start text-left")
      }
    >
      {lines.map((word, i) => (
        <motion.span
          key={word}
          initial={{ opacity: 0, y: 24 }}
          animate={{ opacity: 1, y: 0 }}
          transition={{ delay: i * 0.06, duration: 0.5, ease: [0.16, 1, 0.3, 1] }}
          className={
            "font-black leading-[0.9] tracking-tight " +
            (word === accentWord ? "text-red-500" : "text-white")
          }
          style={{ fontSize: "clamp(2rem, 8vw, 6rem)" }}
        >
          {word}
        </motion.span>
      ))}
    </div>
  );
}
Notes

About this section

Most hero sections lean on an image or a gradient behind the headline; this one skips that and lets oversized, tightly-stacked words carry the whole section, each line landing with a staggered fade-and-rise on mount. Pick it over a standard hero when the copy itself is strong enough to be the visual — line height is pulled down to 0.9 and tracking tightened, so it reads as a magazine cover rather than a SaaS banner with a headline bolted on. Font size is set with clamp() so it scales fluidly across viewport widths instead of jumping between breakpoints. The detail worth knowing before customizing the word list: the accent color is applied by exact string match against one designated word, so if two words in the list are identical, both light up, and if the accent word is renamed without updating that match, nothing highlights — the mismatch fails completely silently, with no warning and no fallback color.

Curator’s note

This is the reference pattern viberdy's own homepage hero is built from — same stagger and easing.

Related

Pairs well with

Matched on shared tags and category — the entries most likely to be used alongside this one.

Featured
NewPro

A saturated poster hero whose photographic sliver opens on hover, with live ticket tiers and a countdown.

heropostereditorial
Featured
NewPro

A magazine-cover hero where the photograph inverts through the letterforms, pinned to its own stacking context.

herotypeblend
Featured
NewPro

A real two-colour separation via SVG filters — with the sRGB interpolation flag that everyone leaves out.

heroduotonesvg-filter