Menu

Change language

GitHub 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.

Installation

$npx shadcn-svelte@latest add https://uipkge.dev/r/svelte/testimonial.json
Manifest:https://uipkge.dev/r/svelte/testimonial.jsonInstalls to:src/lib/components/blocks/testimonial/

Variants

Loading interactive previews…

Files installed (7)

  • src/lib/components/blocks/testimonial/TestimonialLogoQuoteRow.svelte2.1 kB
    <script lang="ts">
      import { Avatar, AvatarFallback } from '$lib/components/ui/avatar'
      import { Separator } from '$lib/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',
        },
      ]
    </script>
    
    <section data-slot="testimonial-logo-quote-row" class="bg-background">
      <div class="mx-auto max-w-6xl px-6 py-16">
        <div class="grid gap-8 md:grid-cols-3 md:gap-10">
          {#each quotes as entry, index (entry.wordmark)}
            <figure class="relative">
              <span class="text-sm font-semibold tracking-[0.18em] uppercase">{entry.wordmark}</span>
              <blockquote class="mt-4 text-sm leading-relaxed text-pretty">“{entry.quote}”</blockquote>
              <figcaption class="mt-5 flex items-center gap-3">
                <Avatar class="size-8">
                  <AvatarFallback class="text-xs">{entry.initials}</AvatarFallback>
                </Avatar>
                <div class="min-w-0">
                  <p class="truncate text-xs font-medium">{entry.author}</p>
                  <p class="text-muted-foreground truncate text-xs">{entry.role}</p>
                </div>
              </figcaption>
    
              <!-- Vertical rules between columns only, so the row reads as one band. -->
              {#if index < quotes.length - 1}
                <Separator orientation="vertical" class="absolute top-0 -right-5 hidden h-full md:block" />
              {/if}
            </figure>
          {/each}
        </div>
      </div>
    </section>
    
  • src/lib/components/blocks/testimonial/TestimonialMarqueeScroll.svelte3.9 kB
  • src/lib/components/blocks/testimonial/TestimonialMasonryVerifiedGrid.svelte8.1 kB
  • src/lib/components/blocks/testimonial/TestimonialQuoteCarouselTelemetry.svelte8.8 kB
  • src/lib/components/blocks/testimonial/TestimonialSingleFeatured.svelte2 kB
  • src/lib/components/blocks/testimonial/TestimonialSocialCards.svelte4.5 kB
  • src/lib/components/blocks/testimonial/Testimonials01.svelte14.3 kB

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