'use client'; import { motion } from 'framer-motion'; import { ScrollReveal } from '@/components/ui/scroll-reveal'; import { SectionLabel, EASE_OUT } from '@/components/ui/page-decoration'; import { Quote } from 'lucide-react'; import { useState } from 'react'; import { cn } from '@/lib/utils'; export interface Testimonial { quote: string; author: string; title: string; company: string; industry: string; } export interface TestimonialSectionProps { title: string; subtitle?: string; testimonials: Testimonial[]; accentColor?: string; } export function TestimonialSection({ title, subtitle, testimonials, accentColor = '#C41E3A', }: TestimonialSectionProps) { const [activeIndex, setActiveIndex] = useState(0); return ( Client Stories {title} {subtitle && ( {subtitle} )} {testimonials.map((testimonial, index) => ( 「{testimonial.quote}」 {testimonial.author.charAt(0)} {testimonial.author} {testimonial.title} · {testimonial.company} {testimonial.industry} ))} {testimonials.map((_, index) => ( setActiveIndex(index)} className={cn( 'h-2 rounded-full transition-all duration-300', activeIndex === index ? 'w-8' : 'w-2 bg-border-primary hover:bg-border-secondary' )} style={activeIndex === index ? { backgroundColor: accentColor } : {}} /> ))} ); } export interface LogoWallProps { title: string; logos: { name: string; industry?: string }[]; } export function LogoWall({ title, logos }: LogoWallProps) { return ( {title} {logos.map((logo, index) => ( {logo.name} {logo.industry && ( {logo.industry} )} ))} ); }
{subtitle}
「{testimonial.quote}」
{title}