Testimonials

Two related testimonial sections: the homepage grid of client quotes, and the client-specific block rendered inside a case study.

Testimonials grid (homepage)

Full grid of client quotes with a CTA card. 3 columns on desktop, 2 on tablet, 1 on mobile. Used on the homepage.

Trusted by teams & founders

5.0
Rated 5 stars on Google
Yashu Singh

Yashu Singh

CommBank

You come across as someone with great knowledge of your topic and bring a lot of experience to make things better.

Mark Dawes

Mark Dawes

RewardPay

Gabriel is really easy to work with and his output was excellent.

Andrew Barton

Andrew Barton

Whistle

Gabriel has been working with us for the better part of two years. We have and continue to be happy with his flexibility in meeting our timeframes, collaboration and excellent result!

Case study testimonials

Client-specific block rendered inside /work/[slug]. Up to two cards side-by-side on md+.

What RewardPay says

M

Mark Dawes

Founder, RewardPay

Gabriel is really easy to work with and his output was excellent. Delivered a clean, scalable pattern we still use today.

Y

Yashu Singh

Senior Manager, CommBank

You come across as someone with great knowledge of your topic and bring a lot of experience to make things better.

Case study testimonials — single

Single testimonial renders as a centered card.

What RewardPay says

M

Mark Dawes

Founder, RewardPay

Gabriel is really easy to work with and his output was excellent. Delivered a clean, scalable pattern we still use today.

View full version

Testimonials props

PropTypeDefaultDescription
testimonialsTestimonial[]-Array of testimonial data. Uses built-in defaults if not provided.
showTitlebooleantrueWhether to show the section header with star rating.

Case study testimonials props

PropTypeDefaultDescription
testimonials*Testimonial[]-Testimonials from the same client as the case study. Returns null when empty.
clientName*string-Client name used in the heading, e.g. "What RewardPay says".

Card styling

Both use the .card-radial class:

background: radial-gradient with light glow at topborder: 1px solid var(--border)border-radius: 20px

Testimonial data structure

tsx
interface Testimonial {
  _id: string
  name: string
  role?: string
  company?: string
  quote: string
  image?: SanityImage
  localImagePath?: string  // For local images
}

Usage

tsx
import { Testimonials } from '@/components/sections/Testimonials'
import { CaseStudyTestimonials } from '@/components/sections/CaseStudyTestimonials'

// Homepage grid
<Testimonials />
<Testimonials testimonials={testimonials} />
<Testimonials showTitle={false} />

// Inside a case study page
<CaseStudyTestimonials
  testimonials={clientTestimonials}
  clientName="RewardPay"
/>

Import

tsx
import { Testimonials } from '@/components/sections/Testimonials'
import { CaseStudyTestimonials } from '@/components/sections/CaseStudyTestimonials'