{"$schema":"https://ui.artbloom.tech/schema/registry-item.json","name":"testimonials","type":"registry:block","title":"Testimonials","description":"A responsive grid of quote cards with star ratings and initials avatars. Server component, no images, no dependencies.","author":"@artbloom","dependencies":[],"registryDependencies":[],"files":[{"path":"components/blocks/testimonials.tsx","target":"components/blocks/testimonials.tsx","content":"const testimonials = [\n  {\n    quote:\n      \"We shipped our new marketing site in a single afternoon. What used to take a design sprint now takes an hour, and the result looks better than anything we built by hand.\",\n    name: \"Amara Okafor\",\n    role: \"Head of Design, Northwind\",\n    initials: \"AO\",\n  },\n  {\n    quote:\n      \"The components are genuinely production-ready. Accessible, responsive, and clean enough that our engineers stopped rewriting them and just started shipping.\",\n    name: \"Daniel Rossi\",\n    role: \"Staff Engineer, Loom Labs\",\n    initials: \"DR\",\n  },\n  {\n    quote:\n      \"Our conversion rate jumped 24% after the redesign. The pricing and testimonial sections did most of the heavy lifting — they just work out of the box.\",\n    name: \"Priya Nair\",\n    role: \"Growth Lead, Cadence\",\n    initials: \"PN\",\n  },\n  {\n    quote:\n      \"I've tried every UI kit out there. This is the first one where I didn't have to fight the defaults to get something that matched our brand.\",\n    name: \"Marcus Bennett\",\n    role: \"Founder, Stackfold\",\n    initials: \"MB\",\n  },\n  {\n    quote:\n      \"Onboarding a new designer used to mean weeks of ramp-up. Now they pull a block, swap the copy, and they're contributing on day one.\",\n    name: \"Sofia Herrera\",\n    role: \"Design Manager, Bright\",\n    initials: \"SH\",\n  },\n  {\n    quote:\n      \"It feels like having a senior front-end developer on the team. The code is the kind you'd actually approve in review, not something you tolerate.\",\n    name: \"Kenji Tanaka\",\n    role: \"CTO, Parcel\",\n    initials: \"KT\",\n  },\n];\n\nfunction Stars() {\n  return (\n    <div className=\"flex gap-0.5\" aria-label=\"Rated 5 out of 5\">\n      {[0, 1, 2, 3, 4].map((i) => (\n        <svg\n          key={i}\n          viewBox=\"0 0 20 20\"\n          fill=\"currentColor\"\n          aria-hidden=\"true\"\n          className=\"h-4 w-4 text-amber-400\"\n        >\n          <path d=\"M10 1.5l2.6 5.27 5.82.85-4.21 4.1.99 5.79L10 14.77l-5.2 2.73.99-5.79-4.21-4.1 5.82-.85L10 1.5z\" />\n        </svg>\n      ))}\n    </div>\n  );\n}\n\nexport default function Testimonials() {\n  return (\n    <section className=\"w-full bg-white py-20 sm:py-28\">\n      <div className=\"mx-auto max-w-6xl px-6\">\n        <div className=\"mx-auto max-w-2xl text-center\">\n          <p className=\"text-sm font-semibold text-indigo-600\">Testimonials</p>\n          <h2 className=\"mt-3 text-3xl font-semibold tracking-tight text-slate-900 sm:text-4xl\">\n            Loved by teams that ship\n          </h2>\n          <p className=\"mt-4 text-lg text-slate-500\">\n            Thousands of designers and engineers build faster with our blocks. Here&apos;s what a few of them have to say.\n          </p>\n        </div>\n\n        <div className=\"mt-16 grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\">\n          {testimonials.map((t) => (\n            <figure\n              key={t.name}\n              className=\"flex h-full flex-col rounded-2xl border border-slate-200 bg-white p-6 shadow-sm\"\n            >\n              <Stars />\n              <blockquote className=\"mt-4 flex-1 text-slate-700\">\n                <p>&ldquo;{t.quote}&rdquo;</p>\n              </blockquote>\n              <figcaption className=\"mt-6 flex items-center gap-3 border-t border-slate-100 pt-5\">\n                <span\n                  aria-hidden=\"true\"\n                  className=\"flex h-10 w-10 flex-none items-center justify-center rounded-full bg-indigo-100 text-sm font-semibold text-indigo-700\"\n                >\n                  {t.initials}\n                </span>\n                <span className=\"min-w-0\">\n                  <span className=\"block truncate text-sm font-semibold text-slate-900\">\n                    {t.name}\n                  </span>\n                  <span className=\"block truncate text-sm text-slate-500\">{t.role}</span>\n                </span>\n              </figcaption>\n            </figure>\n          ))}\n        </div>\n      </div>\n    </section>\n  );\n}\n","type":"registry:block"}],"meta":{"kind":"blocks","categories":["testimonials"],"docs":"https://ui.artbloom.tech/artbloom/blocks/testimonials"}}