Ripple Water Hero

Stillwater, thermal pools and sound baths in Reykjavík

Let the water hold the sound.

Warm pools, singing bowls and a resident cellist in the evenings, with quiet sets from Hildur Guðnadóttir on the first Sunday of every month.

About this block

Ripple Water HeroPRO

A calm wellness hero over the ripple-gradient background component: the lower half of the frame is water, with soft rings of blue, teal and sand spreading from a few slow points and meeting in gentle interference, and the water fades up into the plain page color so the rings seem to rise out of the paper. Large centered type, an intro, a primary Arrow Pill and an underline link rest in the quiet upper half. Every ripple setting passes through the ripples prop, whose base color also sets the page.

Hero276: Ripple Water Hero

A calm hero over the ripple-gradient component: the lower half is water, with soft rings spreading and meeting beneath large centered type, and the water fades up into the page color so the rings rise out of the paper.

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

Base UI flavor

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

This installs the block to components/beste/block/hero276.tsx plus the ripple-gradient background and the button23 and button2 buttons it uses.

Quick start

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

tsx
import { Hero276, hero276Demo } from "@/components/beste/block/hero276";

export default function Page() {
  return <Hero276 {...hero276Demo} />;
}

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

tsx
import { Hero276 } from "@/components/beste/block/hero276";

export default function Page() {
  return (
    <Hero276
      eyebrow="Stillwater, thermal pools and sound baths in Reykjavík"
      heading="Let the water hold the sound."
      description="Warm pools, singing bowls and a resident cellist in the evenings."
      buttons={[
        { label: "Book a soak", href: "/book" },
        { label: "Visit the pools", href: "/visit" },
      ]}
      ripples={{
        colors: ["#9cc9d6", "#5fa8bf", "#e8c9a0", "#3f7f99"],
        baseColor: "var(--background)",
        sources: 3,
        softness: 0.75,
      }}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Small line above the headline
headingstring–Large centered headline, rendered as the page h1
descriptionstring–Intro under the headline
buttonsActionButton[][]The first renders as a primary Arrow Pill, every later one as a Button2 underline link
ripplesOmit<RippleGradientProps, "className" | "children">–Forwarded to the RippleGradient in the lower half: colors, base color, sources, frequency, speed, softness, decay, interference, intensity, saturation, grain, grain size, grain motion, transition and seed. baseColor also paints the page
classNamestring–Extra classes for the outer <section>
ts
type ActionButton = {
  label: string;
  href: string;
};

Behavior notes

  • The water fills the bottom 56% of the section. Its top half fades from the page color to transparent, and because the page is painted with ripples.baseColor, the seam disappears into the paper.
  • Text and buttons use theme tokens (foreground, muted-foreground, primary), and the demo baseColor is var(--background) (also the fallback), so the page and the water around the rings follow light and dark mode while the ring colors stay fixed. If you set a fixed baseColor, check it against the theme's foreground.
  • The copy keeps to the upper half through a bottom padding of 48vh.
  • On load the rings spread out from their sources through the component's own intro while the copy rises in.
  • The component pauses offscreen and on hidden tabs; with prefers-reduced-motion the copy renders without its rise and the water holds still.

More Hero blocks

View all Hero
PRO

hero205

Pool Caustics Hero

PRO

hero262

Wave Gradient Hero

PRO

hero197

Lake Reflection Hero

Get Pro access