
View Details
統計
アニメーション統計
#アニメーション#インタラクティブ
1// コーナードット装飾コンポーネント2function CornerDots({ className = "" }: { className?: string }) {3 return (4 <div className={`absolute h-3 w-3 ${className}`}>5 <div className="absolute left-0 top-0 h-1 w-1 rounded-full bg-zinc-600" />6 <div className="absolute right-0 top-0 h-1 w-1 rounded-full bg-zinc-600" />7 <div className="absolute bottom-0 left-0 h-1 w-1 rounded-full bg-zinc-600" />8 <div className="absolute bottom-0 right-0 h-1 w-1 rounded-full bg-zinc-600" />9 </div>10 );11}1213export function StatsIcons001() {14 const stats = [15 {16 icon: (17 <svg18 className="h-6 w-6"19 fill="none"20 stroke="currentColor"21 viewBox="0 0 24 24"22 >23 <path24 strokeLinecap="round"25 strokeLinejoin="round"26 strokeWidth={1.5}27 d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"28 />29 </svg>30 ),31 value: "10M+",32 label: "Active Users",33 description: "People using our platform daily",34 },35 {36 icon: (37 <svg38 className="h-6 w-6"39 fill="none"40 stroke="currentColor"41 viewBox="0 0 24 24"42 >43 <path44 strokeLinecap="round"45 strokeLinejoin="round"46 strokeWidth={1.5}47 d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"48 />49 </svg>50 ),51 value: "150+",52 label: "Countries",53 description: "Global presence worldwide",54 },55 {56 icon: (57 <svg58 className="h-6 w-6"59 fill="none"60 stroke="currentColor"61 viewBox="0 0 24 24"62 >63 <path64 strokeLinecap="round"65 strokeLinejoin="round"66 strokeWidth={1.5}67 d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"68 />69 </svg>70 ),71 value: "99.9%",72 label: "Uptime",73 description: "Guaranteed availability",74 },75 {76 icon: (77 <svg78 className="h-6 w-6"79 fill="none"80 stroke="currentColor"81 viewBox="0 0 24 24"82 >83 <path84 strokeLinecap="round"85 strokeLinejoin="round"86 strokeWidth={1.5}87 d="M13 10V3L4 14h7v7l9-11h-7z"88 />89 </svg>90 ),91 value: "<50ms",92 label: "Response Time",93 description: "Lightning-fast performance",94 },95 ];9697 return (98 <section className="relative bg-zinc-950 py-24">99 {/* コーナードット装飾 */}100 <CornerDots className="left-6 top-6" />101 <CornerDots className="right-6 top-6" />102 <CornerDots className="bottom-6 left-6" />103 <CornerDots className="bottom-6 right-6" />104105 <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">106 {/* ヘッダー */}107 <div className="mx-auto max-w-2xl text-center">108 <p className="text-xs font-medium uppercase tracking-[0.3em] text-zinc-500">109 Performance110 </p>111 <h2 className="mt-4 text-3xl font-light tracking-wide text-white sm:text-4xl">112 Trusted by millions113 </h2>114 <p className="mt-4 text-base tracking-wide text-zinc-400">115 Numbers that speak for themselves116 </p>117 </div>118119 {/* 統計グリッド */}120 <div className="mt-16 grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-4">121 {stats.map((stat, index) => (122 <div123 key={index}124 className="group relative border border-zinc-800 bg-zinc-900/30 p-8 text-center transition-all hover:border-zinc-700 hover:bg-zinc-900/50"125 >126 {/* コーナードット */}127 <div className="absolute left-2 top-2 h-1 w-1 rounded-full bg-zinc-700" />128 <div className="absolute right-2 top-2 h-1 w-1 rounded-full bg-zinc-700" />129 <div className="absolute bottom-2 left-2 h-1 w-1 rounded-full bg-zinc-700" />130 <div className="absolute bottom-2 right-2 h-1 w-1 rounded-full bg-zinc-700" />131132 {/* アイコン */}133 <div className="mx-auto flex h-12 w-12 items-center justify-center border border-zinc-800 text-zinc-400 transition-colors group-hover:text-white">134 {stat.icon}135 </div>136137 {/* 数値 */}138 <p className="mt-6 text-3xl font-light tracking-wider text-white">139 {stat.value}140 </p>141142 {/* ラベル */}143 <p className="mt-3 text-xs font-medium uppercase tracking-[0.2em] text-zinc-500">144 {stat.label}145 </p>146147 {/* 説明 */}148 <p className="mt-2 text-sm tracking-wide text-zinc-400">149 {stat.description}150 </p>151 </div>152 ))}153 </div>154 </div>155 </section>156 );157}