UIPackage
Menu

Framework

Change language

Boilerplate repo

Testimonials

blockmarketing

Testimonial section set covering the full proof spectrum: a featured pull quote, a logo-and-quote row, a verified masonry grid, social-post cards, a counter-scrolling marquee, a case-study carousel with telemetry KPIs, and an ROI workbench with filters and autoplay.

Also available for Vue ->

Installation

$npx shadcn@latest add https://uipkge.dev/r/react/testimonial.json
Named registry:npx shadcn@latest add @uipkge-react/testimonialInstalls to:components/blocks/testimonial/

Variants

Loading interactive previews…

Schema

Type aliases exported from this item's source. Use these to shape the data you pass in.

Testimonial
interface Testimonial {
  id: string
  name: string
  role: string
  roleCategory: 'frontend' | 'founder' | 'design-eng'
  company: string
  avatar: string
  handle: string
  verifiedSource: 'Twitter' | 'GitHub' | 'LinkedIn'
  quote: string
  metricBadge?: string
  starCount: number
}
CaseStudy
interface CaseStudy {
  id: string
  company: string
  industry: string
  quote: string
  authorName: string
  authorRole: string
  avatar: string
  kpis: {
    label: string
    value: string
    delta: string
  }[]
  architectureSummary: string
}

Files installed (7)

  • components/blocks/testimonial/TestimonialLogoQuoteRow.tsx2.2 kB
    'use client'
    
    import { Avatar, AvatarFallback } from '@/components/ui/avatar'
    import { Separator } from '@/components/ui/separator'
    
    // One sentence each. The row is a proof band, not a testimonial section — if a
    // quote needs two sentences it belongs in a card layout instead.
    const quotes = [
      {
        wordmark: 'Northwind',
        quote: 'Close starts from a reconciled position now, which it never did before.',
        author: 'Erin Walsh',
        role: 'VP Finance',
        initials: 'EW',
      },
      {
        wordmark: 'Halden',
        quote: 'Clinic leads answer their own questions without filing a ticket.',
        author: 'Daniel Brooks',
        role: 'Head of Analytics',
        initials: 'DB',
      },
      {
        wordmark: 'Verity',
        quote: 'Sales and finance forecast off one definition, so review is about the plan.',
        author: 'Priya Raman',
        role: 'RevOps Director',
        initials: 'PR',
      },
    ]
    
    export function TestimonialLogoQuoteRow() {
      return (
        <section data-slot="testimonial-logo-quote-row" className="bg-background">
          <div className="mx-auto max-w-6xl px-6 py-16">
            <div className="grid gap-8 md:grid-cols-3 md:gap-10">
              {quotes.map((entry, index) => (
                <figure key={entry.wordmark} className="relative">
                  <span className="text-sm font-semibold tracking-[0.18em] uppercase">{entry.wordmark}</span>
                  <blockquote className="mt-4 text-sm leading-relaxed text-pretty">{entry.quote}</blockquote>
                  <figcaption className="mt-5 flex items-center gap-3">
                    <Avatar className="size-8">
                      <AvatarFallback className="text-xs">{entry.initials}</AvatarFallback>
                    </Avatar>
                    <div className="min-w-0">
                      <p className="truncate text-xs font-medium">{entry.author}</p>
                      <p className="text-muted-foreground truncate text-xs">{entry.role}</p>
                    </div>
                  </figcaption>
    
                  {/* Vertical rules between columns only, so the row reads as one band. */}
                  {index < quotes.length - 1 && (
                    <Separator orientation="vertical" className="absolute top-0 -right-5 hidden h-full md:block" />
                  )}
                </figure>
              ))}
            </div>
          </div>
        </section>
      )
    }
    
  • components/blocks/testimonial/TestimonialMarqueeScroll.tsx4.3 kB
  • components/blocks/testimonial/TestimonialMasonryVerifiedGrid.tsx9.9 kB
  • components/blocks/testimonial/TestimonialQuoteCarouselTelemetry.tsx9.5 kB
  • components/blocks/testimonial/TestimonialSingleFeatured.tsx2.2 kB
  • components/blocks/testimonial/TestimonialSocialCards.tsx4.7 kB
  • components/blocks/testimonial/Testimonials01.tsx15 kB

Raw manifest:https://uipkge.dev/r/react/testimonial.json