
A testimonial paired with the project it refers to, including a thumbnail and link. Use it to tie praise directly to the work that earned it on a case study.
@shadcn-ui-blocks
import { Badge } from '@/components/ui/badge';
export default function QuoteWithProjectContext() {
const testimonials = [
{
quote:
'The rebrand completely transformed how our customers perceive us. The strategic insights combined with outstanding design execution delivered results beyond our expectations.',
name: 'Jessica Rivera',
title: 'Marketing VP, GreenTech Solutions',
projectName: 'GreenTech Brand Transformation',
projectType: 'Brand Identity',
projectImage:
'https://images.unsplash.com/photo-1618761714954-0b8cd0026356?q=80&w=1000&auto=format&fit=crop',
clientImage:
'https://images.unsplash.com/photo-1508214751196-bcfd4ca60f91?q=80&w=1000&auto=format&fit=crop',
},
{
quote:
'The website redesign resulted in a 65% increase in user engagement and a 40% reduction in bounce rate. Their focus on user experience and conversion optimization was exactly what we needed.',
name: 'Thomas Grant',
title: 'CEO, Elevate Finance',
projectName: 'Elevate Finance Platform',
projectType: 'Web Design & Development',
projectImage:
'https://images.unsplash.com/photo-1460925895917-afdab827c52f?q=80&w=1000&auto=format&fit=crop',
clientImage:
'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?q=80&w=1000&auto=format&fit=crop',
},
];
return (
<section className="w-full py-12 md:py-24 lg:py-32">
<div className="container mx-auto px-4 md:px-6">
<div className="flex flex-col items-center space-y-4 text-center">
<div className="space-y-2">
<h2 className="text-3xl font-bold tracking-tighter sm:text-4xl md:text-5xl">
Client Success <span className="text-primary">Stories</span>
</h2>
<p className="text-muted-foreground mx-auto max-w-[700px] md:text-xl/relaxed">
Real feedback from real clients on real projects
</p>
</div>
</div>
<div className="mt-16 space-y-16">
{testimonials.map((testimonial, index) => (
<div
key={index}
className="grid grid-cols-1 items-center gap-8 lg:grid-cols-2"
>
<div
className={`order-2 ${index % 2 !== 0 ? 'lg:order-1' : 'lg:order-2'}`}
>
<blockquote className="border-primary relative border-l-4 py-2 pl-6">
<p className="mb-6 text-xl leading-relaxed italic">
“{testimonial.quote}”
</p>
<div className="flex items-center gap-4">
<div className="relative h-12 w-12 overflow-hidden rounded-full">
<img
src={testimonial.clientImage}
alt={testimonial.name}
className="object-cover"
/>
</div>
<div>
<p className="font-semibold">{testimonial.name}</p>
<p className="text-muted-foreground text-sm">
{testimonial.title}
</p>
</div>
</div>
</blockquote>
</div>
<div
className={`order-1 ${index % 2 !== 0 ? 'lg:order-2' : 'lg:order-1'}`}
>
<a
href="#"
className="group block overflow-hidden rounded-xl shadow-lg transition-all hover:shadow-xl"
>
<div className="relative aspect-video w-full overflow-hidden">
<img
src={testimonial.projectImage}
alt={testimonial.projectName}
className="object-cover transition-transform duration-300 group-hover:scale-105"
/>
<div className="absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent opacity-90"></div>
<div className="absolute bottom-0 left-0 z-10 p-6 text-white">
<Badge variant="secondary" className="mb-2">
{testimonial.projectType}
</Badge>
<h3 className="text-2xl font-bold">
{testimonial.projectName}
</h3>
<p className="mt-2 font-medium text-white/80">
View Project →
</p>
</div>
</div>
</a>
</div>
</div>
))}
</div>
</div>
</section>
);
}





























