{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "testimonials-10",
  "title": "3-card testimonial grid",
  "description": "Three bordered cards in a responsive grid, each with a star rating, body, and author row separated by a hairline.",
  "dependencies": [
    "lucide-react"
  ],
  "files": [
    {
      "path": "content/components/testimonials/testimonials-10.tsx",
      "content": "import { Star } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst testimonials = [\n  {\n    body: \"blockus replaced weeks of component scaffolding. We copied one install command and had a production-ready pricing page the same afternoon.\",\n    author: \"James Okafor\",\n    role: \"CTO\",\n    company: \"Resend\",\n    img: \"https://i.pravatar.cc/128?img=3\",\n    stars: 5,\n  },\n  {\n    body: \"Design fidelity that matches our Figma files out of the box. The team stopped asking for pixel-perfect fixes after we switched.\",\n    author: \"Priya Mehta\",\n    role: \"Head of Design\",\n    company: \"Vercel\",\n    img: \"https://i.pravatar.cc/128?img=25\",\n    stars: 5,\n  },\n  {\n    body: \"Every component we've installed has been solid under load. Zero hydration warnings, real accessibility labels, Tailwind tokens throughout.\",\n    author: \"Tom Brandt\",\n    role: \"Staff Engineer\",\n    company: \"Linear\",\n    img: \"https://i.pravatar.cc/128?img=52\",\n    stars: 5,\n  },\n]\n\nexport default function Testimonials10() {\n  return (\n    <section className=\"bg-background py-20 sm:py-28\">\n      <div className=\"mx-auto max-w-screen-xl px-6 sm:px-10\">\n        <div className=\"mx-auto mb-14 max-w-xl text-center\">\n          <p className=\"text-sm font-medium tracking-widest text-muted-foreground uppercase\">\n            Customer stories\n          </p>\n          <h2\n            className=\"mt-3 text-balance font-semibold tracking-tight text-foreground\"\n            style={{ fontSize: \"clamp(1.75rem, 3.5vw, 2.5rem)\", letterSpacing: \"-0.025em\" }}\n          >\n            Teams ship faster with blockus\n          </h2>\n        </div>\n\n        <div className=\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {testimonials.map((t) => (\n            <figure\n              key={t.author}\n              className={cn(\n                \"flex flex-col gap-5 rounded-2xl border border-border bg-card p-6 sm:p-8\",\n                \"shadow-xl shadow-black/5 transition-shadow hover:shadow-2xl hover:shadow-black/10\"\n              )}\n            >\n              <div className=\"flex items-center gap-1 text-amber-500\">\n                {[...Array(t.stars)].map((_, i) => (\n                  <Star key={i} className=\"size-4 fill-current\" />\n                ))}\n              </div>\n              <blockquote className=\"grow text-pretty text-sm leading-relaxed text-foreground\">\n                &ldquo;{t.body}&rdquo;\n              </blockquote>\n              <figcaption className=\"flex items-center gap-3 border-t border-border pt-5\">\n                {/* eslint-disable-next-line @next/next/no-img-element */}\n                <img\n                  src={t.img}\n                  alt={t.author}\n                  className=\"size-10 rounded-full ring-2 ring-border\"\n                />\n                <div className=\"flex flex-col leading-tight\">\n                  <span className=\"text-sm font-semibold text-foreground\">\n                    {t.author}\n                  </span>\n                  <span className=\"text-xs text-muted-foreground\">\n                    {t.role} · {t.company}\n                  </span>\n                </div>\n              </figcaption>\n            </figure>\n          ))}\n        </div>\n      </div>\n    </section>\n  )\n}\n",
      "type": "registry:block",
      "target": "components/blocks/testimonials-10.tsx"
    }
  ],
  "categories": [
    "testimonials"
  ],
  "type": "registry:block"
}