Liquid Lookbook Hero

The autumn and winter lookbook from Maison Oriel

Cut close to the weather.

Twenty two looks for cities where the forecast turns by the hour. Boiled wool, waxed cotton and colors lifted from harbor walls.

A model in wide striped trousers leaning on a teal wall
About this block

Liquid Lookbook HeroPRO

A fashion lookbook hero built on the liquid-slides component: photos swap through a noise-displaced liquid wipe with a wet rim and a slight color split, over a thin story-style timeline where shown looks stay full, the current one fills with time and the rest wait empty. Arrows, the keyboard or a click also move it, hovering holds the timer and ripples the photo. Serif copy, a Turn Arrow block button and an underline link sit beside the frame; every slideshow setting passes through the lookbook prop. It crossfades plain images without WebGL and switches instantly for reduced motion.

Hero214: Liquid Lookbook Hero

A lookbook hero with serif copy, a Turn Arrow block button and an underline link beside a LiquidSlides frame that swaps photos through a noise-displaced liquid wipe, with a story-style timeline, arrows, keyboard and click control.

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/hero214?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

This installs the block to components/beste/block/hero214.tsx plus the liquid-slides component and the button24 and button2 buttons it uses.

Quick start

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

tsx
import { Hero214, hero214Demo } from "@/components/beste/block/hero214";

export default function Page() {
  return <Hero214 {...hero214Demo} />;
}

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

tsx
import { Hero214 } from "@/components/beste/block/hero214";

export default function Page() {
  return (
    <Hero214
      eyebrow="The autumn and winter lookbook"
      heading="Cut close to the weather."
      description="Boiled wool, waxed cotton and colors lifted from harbor walls."
      buttons={[
        { label: "Shop the collection", href: "https://beste.co" },
        { label: "Book a fitting", href: "/fittings" },
      ]}
      slides={[
        {
          src: "https://images.unsplash.com/photo-1509631179647-0177331693ae?w=1400&q=80",
          alt: "A model in wide striped trousers leaning on a teal wall",
        },
        {
          src: "https://images.unsplash.com/photo-1485968579580-b6d095142e6e?w=1400&q=80",
          alt: "A woman in a dark check coat walking down a city street",
        },
      ]}
      lookbook={{
        interval: 6,
        transition: 1.5,
        labels: { carousel: "Lookbook", previous: "Previous look", next: "Next look" },
      }}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Small line above the headline
headingstring–Serif headline, rendered as the page h1
descriptionstring–Intro paragraph under the headline
buttonsActionButton[][]The first renders as a Turn Arrow block button (Button24), the rest as underline links (Button2)
slidesLiquidSlide[][]Photos in the slideshow; the frame is skipped when empty
lookbookOmit<LiquidSlidesProps, "slides" | "className" | "children">–Forwards LiquidSlides props: interval, transition, distortion, noiseScale, colorSplit, zoom, autoplay, pauseOnHover, progress, arrows, labels, interactive, paused
classNamestring–Extra classes for the outer <section>
ts
type ActionButton = {
  label: string;
  href: string;
};

type LiquidSlide = {
  src: string;
  alt: string;
};

Behavior notes

  • From lg the grid is 5 columns of copy and 7 of frame, aligned to the bottom. The frame is 4:5 below lg, then as tall as the viewport minus 78px and 8rem, capped at 820px.
  • The wipe adds a wet rim and a slight color split. On the timeline, shown looks stay full, the current one fills with time and the rest wait empty.
  • Hovering holds the timer (with pauseOnHover) and ripples the photo (with interactive). Arrows, the keyboard and a click also move the slideshow, and labels names the carousel and its buttons for screen readers.
  • The frame opens from an 8% inset clipPath over 1.6s, and the copy rises in with delays from 0.05s to 0.4s.
  • Without WebGL the slides crossfade as plain images. With reduced motion the entrances are skipped and slides switch instantly.

More Hero blocks

View all Hero
PRO

hero127

Slideshow Hero with Background Crossfade

PRO

hero137

Slideshow Hero with Click Controls

PRO

hero196

Liquid Chrome Hero

Get Pro access