Capability Marquee Hero

Folded paper architecture in soft grey light
(Studio Auralis)

Quiet, exact.

A monochrome practice for brands that prefer restraint over noise. We shape identity, type, and motion until nothing is left to remove.

About this block

Capability Marquee HeroPRO

Full-bleed monochrome hero with a giant display heading, short description, and a continuous bottom marquee of capability chips that pauses on hover.

Hero141: Capability Marquee Hero

Full-bleed hero with a badge, giant display heading, short description, and outline CTA stacked over a dark-scrim background photo, closed by a continuously scrolling horizontal marquee of capability tag pills that pauses the moment the pointer enters the section.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/hero141?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/hero141?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/hero141.tsx, the badge7 and button12 components it uses for the eyebrow label and CTA button, and its dependencies.

Quick start

The installed file exports hero141Demo alongside the block: the exact props behind the preview above. Spread it to get a working hero in one line.

tsx
import { Hero141, hero141Demo } from "@/components/beste/block/hero141";

export default function Page() {
  return <Hero141 {...hero141Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Hero141 } from "@/components/beste/block/hero141";

export default function Page() {
  return (
    <Hero141
      badge={{ label: "Studio Auralis" }}
      heading="Quiet, exact."
      description="A monochrome practice for brands that prefer restraint over noise."
      backgroundImage={{
        src: "https://images.unsplash.com/photo-1725354282080-cf7e4b7325bc?w=1920&h=1200&fit=crop",
        alt: "Folded paper architecture in soft grey light",
      }}
      button={{ label: "Start a project", href: "https://beste.co" }}
      tags={[
        { label: "Brand systems", href: "https://beste.co" },
        { label: "Editorial design", href: "https://beste.co" },
        { label: "Art direction", href: "https://beste.co" },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
headingstringGiant display heading
descriptionstringShort supporting paragraph under the heading
backgroundImage{ src: string; alt: string }Full-bleed background photo
badge{ label: string }Eyebrow label rendered as a Badge7
button{ label: string; href: string }Outline CTA below the description, rendered via Button12
tagsTag[][]Capability chips scrolled in the bottom marquee
classNamestringExtra classes for the outer <section>
ts
type Tag = { label: string; href: string };

Behavior notes

  • The marquee track is tags duplicated end to end ([...tags, ...tags]), which is what makes the loop read as seamless; the duplicated second half is marked aria-hidden and tabIndex={-1} so it never shows up in the tab order or to screen readers.
  • Scrolling is a hand-written CSS @keyframes block (hero141-marquee, defined in a scoped <style jsx> tag) that translates the track from 0 to -50% over 38 seconds, linear and infinite.
  • Hovering anywhere in the section pauses the whole marquee at once via group-hover/hero141:[animation-play-state:paused]; there is no per-pill hover pause.
  • The track's left and right edges fade to transparent through a mask-image: linear-gradient(...), so pills entering or leaving the visible strip soften out instead of clipping hard.
  • The badge, heading, description, and button block sits above the marquee in its own constrained max-w-7xl column, while the marquee itself runs full width with no side padding, so it visually bleeds to both edges of the viewport.

More Hero blocks

View all Hero
PRO

hero136

Thumbnail Marquee Hero

Full-bleed hero whose background crossfades to the active item, with an auto-scrolling marquee of clickable thumbnails along the bottom and a giant heading above the strip.

PRO

hero119

Full-Bleed Display Hero

Full-bleed image hero with an oversized three-word display heading, a row of monospace meta labels, a bold sub-headline, and a featured card with thumbnail, category, paginated index, and title.

PRO

hero137

Slideshow Hero with Click Controls

Full-bleed monochrome hero that crossfades across a set of slides, navigated by explicit previous/next arrows and clickable dots with an auto-loop, plus a caption linking the active slide.

PRO

hero130

Monochrome Hero with Rotating Announcement Ticker

Full-bleed hero with a static background image, a giant display heading, and a slim bordered bar that auto-rotates through short, clickable announcement messages with position dots.

PRO

hero140

Animated Tab Hero

Full-bleed monochrome hero with a giant heading and a row of clickable tab chips that fade between text panels (title, description, stat), auto-advancing on a timer with no background swap.

PRO

hero99

Fullscreen Hero with Marquee Ticker

Cinematic fullscreen hero with scrolling marquee keyword band over inset background video