Testimonial Wall

Testimonial wall of quote cards with names, roles, initials avatars and optional star ratings, laid out in masonry-like columns that scroll vertically in alternating directions behind fade masks, pause on hover or focus, fall back to a static masonry under reduced motion, offer a static grid variant, and pick their column count from the block's own container width.

Preview

Testimonial Wall preview width

Install

Add it with the shadcn CLI, or copy the source manually.

$ bunx --bun shadcn add @karaui/testimonial-wall
@karaui not found? Add it to components.json
{
  "registries": {
    "@karaui": "https://karaui.kamisama-v0.my.id/r/{name}.json"
  }
}

@karaui is in shadcn's public registry directory, so the latest CLI needs no setup. On an older CLI, merge this into the existing file once and every @karaui/… install resolves.

API Reference

TestimonialCard

testimonial
Testimonial
—
className?
string
—

TestimonialWall

testimonials
Testimonial[]
—
variant?
"grid" | "marquee"

"marquee" scrolls columns in alternating directions; "grid" is static.

marquee
columns?
1 | 2 | 3 | 4

Maximum number of columns at the widest container size (1–4). Default 3.

3
speed?
number

Seconds for one loop of the first column. Others vary slightly. Default 40.

40
height?
string | number

Height of the marquee viewport. Default 32rem. Ignored by `grid`.

32rem
pauseOnHover?
boolean

Pause a column while it is hovered or holds focus. Default true.

true
eyebrow?
ReactNode
—
heading?
ReactNode
—
description?
ReactNode
—
className?
string
—

Keep in mind

Some components on this site are inspired by or recreated from existing work across the web. I'm not here to take credit; just to learn, experiment, and sometimes push things a bit further. If something looks familiar and I forgot to mention you, reach out and I'll fix that right away.

Updated