Carousel Testimonials

Full-width swipeable testimonial carousel with autoplay and dot navigation. Perfect for highlighting multiple customer quotes on landing pages.

FREE

A full-width, single-slide-per-view Embla carousel of customer quotes with optional autoplay and dot navigation: each slide centers a large quote, a circular avatar, the person's name, and their role.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/testimonial1"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/testimonial1"

This installs the block to components/beste/block/testimonial1.tsx, its embla-carousel-react and embla-carousel-autoplay npm dependencies, and the badge and button shadcn/ui primitives it depends on.

Quick start

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

tsx
import { Testimonial1, testimonial1Demo } from "@/components/beste/block/testimonial1";

export default function LandingPage() {
  return <Testimonial1 {...testimonial1Demo} />;
}

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

tsx
import { Testimonial1 } from "@/components/beste/block/testimonial1";

export default function LandingPage() {
  return (
    <Testimonial1
      heading="Loved by teams worldwide"
      description="Hear from the people who use our platform every day."
      testimonials={[
        {
          id: "testimonial-1",
          text: "This platform completely transformed how our team collaborates.",
          name: "Sarah Chen",
          role: "Engineering Manager at TechCorp",
          avatar: {
            src: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=150&h=150&fit=crop",
            alt: "Sarah Chen",
          },
        },
        {
          id: "testimonial-2",
          text: "We reduced our development time by 40% after switching.",
          name: "Emily Rodriguez",
          role: "CTO at Innovation Labs",
        },
      ]}
      autoplay
      autoplayDelay={4000}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }Optional badge above the heading
headingstringSection heading
descriptionstringSection intro text
testimonialsTestimonialItem[]Slides, in order (required prop)
autoplaybooleantrueEnables the Embla autoplay plugin
autoplayDelaynumber5000Milliseconds between autoplay advances
classNamestringExtra classes for the outer <section>
ts
type TestimonialItem = {
  id: string;
  text: string;
  name: string;
  role: string;
  avatar?: { src: string; alt: string };
};

Behavior notes

More Testimonial blocks

View all Testimonial
PRO

testimonial25

Testimonial Carousel

Horizontally scrollable testimonial cards with full-bleed portraits, overlaid quote and author.

PRO

testimonial28

Marquee Quotes

Two opposing auto-scrolling marquee rows of testimonial cards.

PRO

testimonial32

Scrolling Testimonial Wall

Centered header above three vertically auto-scrolling columns of rated review cards with fade masks, pause-on-hover, and a closing CTA.

PRO

testimonial31

Stats With Testimonial Gallery

Centered header above a stats rail beside an expanding portrait gallery — hovering a person widens their frame and reveals their quote while the others contract.

PRO

testimonial29

Sticky Quote List

Sticky featured testimonial and rating beside a scrollable list of quote cards.

PRO

testimonial34

Testimonial Marquee

Two rows of monochrome quote cards scrolling in opposite directions with edge fades.