Skip to content

Testimonials

Testimonials Marquee

Review cards in two rows drifting in opposite directions, a snapping carousel on smaller screens.

Layout and motion from the Findit template — see it in context

Installation

$ npx shadcn@latest add https://framebrick.co/r/blocks/testimonials-marquee.json

Usage

import { TestimonialsMarquee } from "@/components/testimonials-marquee";

<TestimonialsMarquee
  reviews={[
    { name: "Anna Vogel", title: "A seamless journey", quote: "Smooth and professional.", photo: { src: "/clients/anna.jpg" } },
  ]}
/>

Props

PropTypeDefaultDescription
labelstringTestimonialsSmall muted line above the heading.
title / leadstring—Centered heading (h2) and lead; the title also labels the rows and the carousel.
reviews{ name, title, quote, rating?, photo: { src, alt? } }[]12 reviewsSplit in two rows from 1024px; all in the carousel below. rating defaults to 5.
speednumber20Pixels per second for the rows.
classNamestring—Classes for the <section>.
  • From 1024px two rows move in opposite directions at 20px/s with faded edges (marquee); they stand still with reduced motion. Give each row enough cards to fill the width (six at 1280px).
  • Below 1024px a carousel snaps each card to the center; arrows 20px in from each side hide at their end and move one card.
  • Stars use the primary color. The band sits on the muted surface.

AI prompt

Paste into v0, Lovable, Bolt or Claude to rebuild this block in your own project.

Create a React + Tailwind CSS block called TestimonialsMarquee (Next.js).
- <section className="overflow-hidden bg-muted py-(--section-y)">, container mx-auto max-w-(--container) px-(--gutter), column gap-12.
- Centered title: a small muted label, an h2 (font-heading text-h2 semibold), a muted lead up to max-w-md.
- Card (300 × 324, rounded-xl bg-card p-5, content spread top to bottom): five 14px stars in text-primary (role="img", "Rated 5 out of
  5"), then the title (font-medium) and quote (text-sm muted) in a blockquote; at the bottom a 42px round photo and the name (text-sm).
- From 1024px: split the reviews into two rows that scroll forever — the first to the left, the second to the right — at 20px per second,
  20px apart, with edges masked to transparent over 10%; still with prefers-reduced-motion; duplicated copies aria-hidden and inert.
- Below 1024px: a horizontal scroll-snap list (snap-center, gap-5, hidden scrollbar, the same edge mask) with two 40px round arrow
  buttons 20px in from each side that scroll by one card and fade out at their end.
- Only shadcn variables and block tokens (secondary text on bg-muted is text-foreground/65: muted-foreground
  falls under 4.5:1 there).

Be the first to know

Get new templates and components first

One short email when we release a template or a free component. No spam — unsubscribe anytime.

We use your email only for Framebrick updates. Privacy policy