Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Waterfall Testimonials Block for React

Nine customer quotes for a deploy platform in a staircase of three columns, one per stage of being a customer, each starting a step lower, in cells whose lines overshoot their corners.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

A staircase of customer quotes. Three columns hold three cards each, and every column starts a step lower than the one before, so the wall steps down across the page as the months add up: Months 1 to 6, Months 7 to 12 and Month 13 onwards, each headed by its stage and a story count. Every quote sits in its own cell whose hairlines overshoot the corners, with a + mark at its start, and opens with how long the customer has been one, then the quote, then the author's initials, name, role and company. On a phone the columns become the slides of a snap carousel, each slide 85% wide so the next column peeks in, and the steps drop away. The copy speaks for Tidemark, a fictional deploy platform. No button and no primary colour. For a calm, editorial wall of proof.

FAQ

How do I change the size of the steps?

Each column in COLUMNS has a drop, a class that sets how far it starts below the first: md:mt-10 lg:mt-14 for the second and md:mt-20 lg:mt-28 for the third. Change those margins to make the staircase steeper or shallower, or set one to an empty string to line a column up with the first.

Why are the columns fixed instead of flowing?

Each column is its own list, so every card stays in the stage you put it in and the steps are exact. A flowing layout, like the masonry block, balances the columns for you but cannot start one lower or group quotes by stage.

How does it work on a phone?

Below md the three columns sit in one row that scrolls sideways and snaps to each column (snap-x snap-mandatory), every slide 85% wide so the next one is visibly there. Each slide keeps its stage heading, so the swipe still reads as time passing. On tablets and up the row becomes a three-column grid.

What do screen readers get?

Three groups, each with an h3 for its stage and a list of cards, read one after the other; each card is a figure with its quote in a blockquote and the author in a figcaption. The steps and lines are only spacing and borders, and the initials avatars are hidden because the name follows them. Nothing is focusable.

How do I use my own quotes?

Edit COLUMNS at the top of the file: each column has a stage label and its quotes, and each quote has a quote, the author's name, initials and role and a tenure line such as "8 months in". The tenure is relative on purpose, so it never goes stale. The nine people and companies here are made up.

What moves, and can I turn it off?

The header and the columns fade up once on load, with plain CSS transitions and no animation library. With reduced motion on, they appear in place at once. Nothing moves afterwards.

Does it work right to left?

Yes. The columns run in reading order, the + marks sit on the start side and the carousel scrolls from the start, because the padding and lines use logical sides. Quote marks sit in a bdi element so they stay put.

  • Pro

    Masonry Testimonials

    Walls and lanes

    A masonry wall of twelve notes from runners in CSS columns inside a framed figure: cards of every length stack tight, from one column on a phone to four on a wide screen.

  • Pro

    A wall of twenty-four short customer notes for a component kit, set as a masonry band that shares its hairlines and fades out under a mask until a Show all button opens the rest.

  • Pro

    Twelve customer quotes from Lantern's support teams in one hairline grid, with a density switch in the header: Comfortable, Compact or Quotes only re-tunes the same cells, from roomy with stars and roles down to the bare words.

  • Pro

    Three customer quotes with no card chrome: a centred header over one closing band of three columns, each a large initials avatar over a centred quote, divided by hairlines.

  • Pro

    A testimonials section split by a solid divider: a pinned intro column with the heading and a Shine Button beside five customer quotes set as ruled rows, the first one larger.

  • Pro

    A centred showcase hero with a headline, a Shine Button and an outline action over a wall of six customer quotes in cells that share their hairlines, a snap carousel on a phone.