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

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
RewardPay
Gabriel is really easy to work with and his output was excellent.

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
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.
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
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
| Prop | Type | Default | Description |
|---|---|---|---|
testimonials | Testimonial[] | - | Array of testimonial data. Uses built-in defaults if not provided. |
showTitle | boolean | true | Whether to show the section header with star rating. |
Case study testimonials props
| Prop | Type | Default | Description |
|---|---|---|---|
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: 20pxTestimonial data structure
interface Testimonial {
_id: string
name: string
role?: string
company?: string
quote: string
image?: SanityImage
localImagePath?: string // For local images
}Usage
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
import { Testimonials } from '@/components/sections/Testimonials'
import { CaseStudyTestimonials } from '@/components/sections/CaseStudyTestimonials'

