

View Details
テスティモニアル
ロゴ付きテスティモニアル
#グリッドレイアウト#ダークモード
数字・実績付きのお客様の声セクション
1import Image from "next/image";23// acsim.appスタイル: コーナードット、subtle border4// 統計データと引用を組み合わせたテスティモニアル5// ダーク/ライトモード両対応6export function TestimonialStats001() {7 const stats = [8 { value: "10K+", label: "Active Users" },9 { value: "99.9%", label: "Uptime" },10 { value: "4.9/5", label: "Rating" },11 { value: "50M+", label: "API Requests" },12 ];1314 const testimonial = {15 content:16 "We evaluated dozens of solutions before choosing this platform. The performance, reliability, and developer experience are simply unmatched. Our team has never been more productive.",17 author: "Jennifer Martinez",18 role: "VP of Engineering",19 company: "Quantum Labs",20 avatar:21 "https://images.unsplash.com/photo-1494790108377-be9c29b29330?w=100&h=100&fit=crop&crop=face",22 };2324 return (25 <section className="bg-background py-24">26 <div className="mx-auto max-w-6xl px-4 sm:px-6 lg:px-8">27 {/* Header */}28 <div className="mb-16 text-center">29 <p className="mb-4 text-xs font-medium uppercase tracking-[0.3em] text-muted-foreground">30 By the numbers31 </p>32 <h2 className="text-3xl font-light tracking-tight text-foreground">33 Trusted at scale34 </h2>35 </div>3637 {/* Stats Grid */}38 <div className="grid grid-cols-2 gap-4 md:grid-cols-4">39 {stats.map((stat, index) => (40 <div41 key={index}42 className="group relative border border-border bg-card/20 p-6 text-center"43 >44 {/* Corner dots */}45 <div className="absolute left-2 top-2 h-1 w-1 rounded-full bg-muted-foreground/20" />46 <div className="absolute right-2 top-2 h-1 w-1 rounded-full bg-muted-foreground/20" />4748 <p className="text-3xl font-light tracking-tight text-foreground md:text-4xl">49 {stat.value}50 </p>51 <p className="mt-2 text-xs uppercase tracking-[0.2em] text-muted-foreground">52 {stat.label}53 </p>54 </div>55 ))}56 </div>5758 {/* Featured Testimonial */}59 <div className="relative mt-12 border border-border bg-card/30 p-8 md:p-12">60 {/* Corner dots */}61 <div className="absolute left-3 top-3 h-1.5 w-1.5 rounded-full bg-muted-foreground/30" />62 <div className="absolute right-3 top-3 h-1.5 w-1.5 rounded-full bg-muted-foreground/30" />63 <div className="absolute bottom-3 left-3 h-1.5 w-1.5 rounded-full bg-muted-foreground/30" />64 <div className="absolute bottom-3 right-3 h-1.5 w-1.5 rounded-full bg-muted-foreground/30" />6566 <div className="flex flex-col items-center gap-8 md:flex-row md:items-start md:gap-12">67 {/* Avatar */}68 <div className="shrink-0">69 <Image70 src={testimonial.avatar}71 alt={testimonial.author}72 width={80}73 height={80}74 className="rounded-full object-cover grayscale"75 />76 </div>7778 {/* Content */}79 <div className="flex-1">80 {/* Quote */}81 <div className="mb-6 flex h-8 w-8 items-center justify-center border border-border text-muted-foreground">82 <svg83 className="h-4 w-4"84 fill="currentColor"85 viewBox="0 0 24 24"86 >87 <path d="M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z" />88 </svg>89 </div>9091 <p className="text-lg leading-relaxed tracking-wide text-muted-foreground md:text-xl">92 “{testimonial.content}”93 </p>9495 {/* Author info */}96 <div className="mt-8 flex items-center gap-4">97 <div>98 <p className="text-sm font-medium tracking-wide text-foreground">99 {testimonial.author}100 </p>101 <p className="text-xs tracking-wider text-muted-foreground">102 {testimonial.role}103 </p>104 </div>105 <span className="text-muted-foreground/50">|</span>106 <span className="text-xs uppercase tracking-[0.15em] text-muted-foreground">107 {testimonial.company}108 </span>109 </div>110 </div>111 </div>112 </div>113114 {/* Bottom accent */}115 <div className="mt-12 flex items-center justify-center gap-8">116 <span className="h-px w-16 bg-border" />117 <span className="text-xs uppercase tracking-[0.2em] text-muted-foreground">118 Join 10,000+ teams119 </span>120 <span className="h-px w-16 bg-border" />121 </div>122 </div>123 </section>124 );125}