Testimonial 03
shadcn-ui-blocks-shadcnship/testimonial-03FreeBlock
A two-column testimonial carousel with prev/next navigation and portrait image cards
See it running
Open the demo on shadcn-ui-blocks
shadcnship.com/blocks/testimonial-03Install it
npx shadcn@latest add https://shadcnship.com/r/testimonial-03.jsonSource
1"use client";23import { useState } from "react";4import { ArrowLeft, ArrowRight, Star } from "lucide-react";5import { cn } from "@/lib/utils";6import { Button } from "@/components/ui/button";78interface Testimonial03Item {9 name: string;10 role: string;11 image: string;12 content: string;13 rating: number;14}1516interface Testimonial03Props {17 label?: string;18 title?: string;19 description?: string;20 testimonials?: Testimonial03Item[];21 cta?: {22 primary?: { text: string; url: string };23 secondary?: { text: string; url: string };24 };25 footnote?: string;26 className?: string;27}2829const StarRating = ({30 rating,31 white,32 className,33}: {34 rating: number;35 white?: boolean;36 className?: string;37}) => (38 <div className={cn("flex gap-0.5", className)}>39 {Array.from({ length: 5 }).map((_, i) => (40 <Star41 key={i}42 className={cn(43 "size-3",44 white45 ? i < Math.round(rating)46 ? "fill-white text-white"47 : "fill-white/20 text-white/20"48 : i < Math.round(rating)49 ? "fill-yellow-400 text-yellow-400"50 : "fill-muted-foreground/20 text-muted-foreground/20",51 )}52 />53 ))}54 </div>55);5657const defaultTestimonials: Testimonial03Item[] = [58 {59 name: "Emily Watson",60 role: "Product Manager",61 image: "https://www.shadcnship.com/images/avatars/avatar-1.webp",62 content:63 "Our team's velocity increased significantly. The components are production-ready and beautifully designed — we went from prototype to live in days, not weeks.",64 rating: 5,65 },66 {67 name: "Alex Chen",68 role: "Frontend Developer",69 image: "https://www.shadcnship.com/images/avatars/avatar-3.webp",70 content:71 "These components saved me weeks of development time. Copy, paste, customize — it's that simple. The TypeScript support and accessibility built-in are exactly what I need.",72 rating: 5,73 },74 {75 name: "Sarah Johnson",76 role: "UI/UX Designer",77 image: "https://www.shadcnship.com/images/avatars/avatar-2.webp",78 content:79 "The components are beautifully designed and fully customizable. Perfect for rapid prototyping and production alike. Dark mode works flawlessly out of the box.",80 rating: 5,81 },82 {83 name: "Michael Rodriguez",84 role: "Full-Stack Engineer",85 image: "https://www.shadcnship.com/images/avatars/avatar-4.webp",86 content:87// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from shadcn-ui-blocks
All 74 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Square Grid Backgroundbackground-01 | shadcn-ui-blocks | Blocks | Free | no deps | |
| Dot Pattern Backgroundbackground-02 | shadcn-ui-blocks | Blocks | Free | no deps | |
| Diagonal Stripes Backgroundbackground-03 | shadcn-ui-blocks | Blocks | Free | no deps | |
| Vertical Lines Backgroundbackground-04 | shadcn-ui-blocks | Blocks | Free | no deps | |
| Interactive Grid Backgroundbackground-05 | shadcn-ui-blocks | Blocks | Free | no deps | |
| Banner 01banner-01 | shadcn-ui-blocks | Blocks | Free | 1 dep | |
| Blog 01blog-01 | shadcn-ui-blocks | Blocks | Free | no deps | |
| Changelog 01changelog-01 | shadcn-ui-blocks | Blocks | Free | no deps |
