{"success":true,"data":{"block":{"id":"testimonials-simple-grid","name":"Testimonials Simple Grid","title":"Testimonials Simple Grid","category":"Testimonials","categorySlug":"testimonials","description":"A clean, straightforward grid of testimonial cards with configurable columns (2, 3, or 4). Each card displays a quote with author avatar, name, and role. The minimal design focuses on content without distractions. Ideal for any page requiring a clean testimonial display.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/293669/2ro0bgdpbcthbt0aw6xm4nu0rxnc/cleanshot-2026-03-10-at-10-48-51-2x.png","mobile":"https://cdn.ing/assets/i/r/293668/79772z65izabq3khkxvfwe9moxrz/cleanshot-2026-03-10-at-10-49-03-2x.png"},"componentPath":"blocks/testimonials/testimonials-simple-grid.tsx","code":"import { TestimonialsSimpleGrid } from \"@opensite/ui/blocks/testimonials/testimonials-simple-grid\";\nimport { imagePlaceholders } from \"@/lib/media\";\n\nexport default function Demo() {\n  return (\n    <TestimonialsSimpleGrid\n      heading=\"Customer Stories\"\n      description=\"Hear from businesses that have transformed their operations with our platform\"\n      columns={3}\n      testimonials={[\n        {\n          quote:\n            \"The platform's intuitive design and powerful features have streamlined our entire workflow. Our team productivity increased by 40% in the first quarter.\",\n          author: \"Jennifer Martinez\",\n          role: \"Director of Operations\",\n          company: \"Streamline Solutions\",\n          avatarSrc: imagePlaceholders[21],\n        },\n        {\n          quote:\n            \"Outstanding support and reliable performance. The implementation team guided us every step of the way.\",\n          author: \"Michael Chen\",\n          role: \"CTO\",\n          company: \"TechVision\",\n          avatarSrc: imagePlaceholders[35],\n        },\n        {\n          quote:\n            \"We've seen measurable improvements in every key metric. The ROI has exceeded all expectations.\",\n          author: \"Sarah Williams\",\n          role: \"VP of Finance\",\n          company: \"GrowthMetrics\",\n          avatarSrc: imagePlaceholders[49],\n        },\n        {\n          quote:\n            \"The analytics capabilities have transformed our decision-making process. Highly recommend to any data-driven organization.\",\n          author: \"David Park\",\n          role: \"Head of Analytics\",\n          company: \"DataFirst\",\n          avatarSrc: imagePlaceholders[63],\n        },\n        {\n          quote:\n            \"Security features met our stringent enterprise requirements. The compliance team was thoroughly impressed.\",\n          author: \"Lisa Anderson\",\n          role: \"CISO\",\n          company: \"SecureCorp\",\n          avatarSrc: imagePlaceholders[77],\n        },\n        {\n          quote:\n            \"Seamless integration with our existing tech stack. No disruption, maximum value from day one.\",\n          author: \"Robert Zhang\",\n          role: \"Engineering Lead\",\n          company: \"IntegrateTech\",\n          avatarSrc: imagePlaceholders[91],\n        },\n      ]}\n      actions={[\n        {\n          label: \"Read All Reviews\",\n          href: \"#\",\n          variant: \"default\",\n          size: \"lg\",\n        },\n      ]}\n      background=\"gray\"\n      pattern=\"diagonalCrossFadeTop\"\n      patternOpacity={0.9}\n      spacing=\"lg\"\n    />\n  );\n}","propsSchema":{"testimonials":{"type":"array","description":"Array of testimonials to display","items":{"type":"object","description":"","fields":{"quote":{"type":"object","description":"Testimonial quote text","typeLabel":"ReactNode","required":true},"author":{"type":"object","description":"Author name","typeLabel":"ReactNode","required":false},"role":{"type":"object","description":"Author role/title","typeLabel":"ReactNode","required":false},"company":{"type":"object","description":"Author company","typeLabel":"ReactNode","required":false},"avatarSrc":{"type":"string","description":"Author avatar image URL","required":false},"avatar":{"type":"object","description":"Author avatar configuration (alternative to avatarSrc)","fields":{"src":{"type":"string","description":"","required":true},"alt":{"type":"string","description":"","required":false},"fallback":{"type":"string","description":"","required":false}},"typeLabel":"{ src: string; alt?: string; fallback?: string; }","required":false},"logoSrc":{"type":"string","description":"Company logo URL","required":false},"rating":{"type":"number","description":"Star rating (1-5)","required":false},"className":{"type":"string","description":"Additional CSS classes","required":false},"linkConfig":{"type":"object","description":"Review linking config","fields":{"label":{"type":"object","description":"","typeLabel":"React.ReactNode","required":true},"href":{"type":"string","description":"","required":true},"className":{"type":"string","description":"","required":false}},"typeLabel":"{ label: React.ReactNode; href: string; className?: string; }","required":false}},"typeLabel":"TestimonialItem"},"typeLabel":"TestimonialItem[]","required":false},"testimonialsSlot":{"type":"object","description":"Custom slot for rendering testimonials (overrides testimonials array)","typeLabel":"React.ReactNode","required":false},"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":false},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false},"columns":{"type":"string","description":"Number of columns in the grid","typeLabel":"2 | 3 | 4","required":false},"className":{"type":"string","description":"Additional CSS classes for the section wrapper","required":false},"headerClassName":{"type":"string","description":"Additional CSS classes for the header container","required":false},"headingClassName":{"type":"string","description":"Additional CSS classes for the heading","required":false},"descriptionClassName":{"type":"string","description":"Additional CSS classes for the description","required":false},"gridClassName":{"type":"string","description":"Additional CSS classes for the grid container","required":false},"quoteClassName":{"type":"string","description":"Additional CSS classes for the quote text","required":false},"authorClassName":{"type":"string","description":"Additional CSS classes for the author section","required":false},"background":{"type":"string","description":"Background style for the section","typeLabel":"SectionBackground","required":false},"spacing":{"type":"object","description":"Vertical spacing for the section","fields":{},"typeLabel":"SectionSpacing","required":false},"pattern":{"type":"object","description":"Optional background pattern name or URL","fields":{},"typeLabel":"PatternName","required":false},"patternOpacity":{"type":"number","description":"Pattern overlay opacity (0-1)","required":false},"containerClassName":{"type":"string","description":"Additional CSS classes for the container","required":false},"cardClassName":{"type":"string","description":"Additional CSS classes for each card","required":false},"cardContentClassName":{"type":"string","description":"Additional CSS classes for the card content","required":false},"actions":{"type":"array","description":"Array of action configurations for CTA buttons","items":{"type":"object","description":"","fields":{"variant":{"type":"string","description":"","typeLabel":"\"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\"","required":false},"size":{"type":"string","description":"","typeLabel":"\"default\" | \"sm\" | \"md\" | \"lg\" | \"icon\" | \"icon-sm\" | \"icon-lg\"","required":false},"label":{"type":"object","description":"Button/link label text or ReactNode","typeLabel":"ReactNode","required":false},"icon":{"type":"object","description":"Icon to display (typically before label)","typeLabel":"ReactNode","required":false},"iconAfter":{"type":"object","description":"Icon to display after the label","typeLabel":"ReactNode","required":false},"href":{"type":"string","description":"URL for link behavior","required":false},"onClick":{"type":"object","description":"Click handler for button behavior","typeLabel":"MouseEventHandler","required":false},"className":{"type":"string","description":"Additional CSS classes for the action","required":false},"children":{"type":"object","description":"Custom children (overrides label + icon rendering)","typeLabel":"ReactNode","required":false},"aria-label":{"type":"string","description":"ARIA label for accessibility","required":false},"asButton":{"type":"boolean","description":"Render as a button element instead of an anchor/link","required":false}},"typeLabel":"ActionConfig"},"typeLabel":"ActionConfig[]","required":false},"actionsSlot":{"type":"object","description":"Custom slot for rendering actions (overrides actions array)","typeLabel":"React.ReactNode","required":false},"actionsClassName":{"type":"string","description":"Additional CSS classes for the actions container","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false}},"defaultProps":{},"dependencies":["@opensite/ui"],"tags":["testimonials","grid","simple","clean","minimal","cards","configurable","responsive"],"performance":{},"importantUsageNotes":"DO NOT generate or guess testimonials, reviews, ratings, customer names, company logos, or any review content — only use real, verified testimonials and customer data from the system. If the site has no real testimonials in the system, DO NOT use this block. The 'columns' prop accepts 2, 3, or 4; ensure the 'testimonials' array length is a multiple of the chosen column count (e.g., multiples of 3 for a 3-column grid). The demo uses 3 columns with 6 testimonials. Each 'quote', 'author', 'role', 'company', and 'avatarSrc' must be real, verified data — only set 'avatarSrc' if a real image URL is available. If you supply multiple 'actions', ensure to use a variant of 'default' for the first action, and 'outline' for the second action to ensure proper visual distinction between the two CTAs. Follow the example props closely for this block."}},"timestamp":"2026-05-13T10:41:02.308Z"}