{"success":true,"data":{"block":{"id":"hero-testimonial-image-grid","name":"Testimonial Image Grid Hero","title":"Hero Testimonial Image Grid","category":"Hero","categorySlug":"hero","description":"A hero combining testimonials with an image grid layout. Shows customer feedback alongside visual content.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290348/do85q13ta1010srw4u5teae8yppl/cleanshot-2026-02-18-at-09-02-09.png","mobile":"https://cdn.ing/assets/i/r/290347/0h6qx647ixl6d1ffirwqz6956g9a/cleanshot-2026-02-18-at-09-02-20.png"},"componentPath":"blocks/hero/hero-testimonial-image-grid.tsx","code":"import { DynamicIcon } from \"@opensite/ui\";\nimport { HeroTestimonialImageGrid } from \"@opensite/ui/blocks/hero/hero-testimonial-image-grid\";\n\nexport default function Demo() {\n  return (\n    <HeroTestimonialImageGrid\n      heading=\"Loved by customers worldwide\"\n      description=\"See why thousands of businesses trust us to power their operations and drive growth.\"\n      testimonial={{\n        quote:\n          \"This platform transformed how we work. Absolutely game-changing.\",\n        author: \"Sarah Johnson\",\n        role: \"CEO\",\n        company: \"TechCorp\",\n        avatars: [{ image: \"https://toastability-production.s3.amazonaws.com/vvkma6b8whdkiq5nq8z4eyfe00vo\", fallback: \"SJ\" }],\n      }}\n      gridImages={[\n        { src: \"https://toastability-production.s3.amazonaws.com/9797jh6slgbf9oq6lzlimcdiuziv\", alt: \"Customer success story 1\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/betxbx61fkijt0aygineplf489ze\", alt: \"Customer success story 2\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/0o6d7z4mm9nzeufhv9kefrhihbip\", alt: \"Customer success story 3\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/1xdx70c7gp9l883soyh5d3exesvt\", alt: \"Customer success story 4\" },\n      ]}\n      actions={[\n        {\n          label: \"Get Started\",\n          href: \"#\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n        },\n      ]}\n      background=\"dark\"\n      pattern=\"crossPattern\"\n      patternOpacity={0.9}\n    />\n  );\n}","propsSchema":{"heading":{"type":"object","description":"Main heading text","typeLabel":"React.ReactNode","required":true,"maxLength":50},"description":{"type":"object","description":"Supporting description text","typeLabel":"React.ReactNode","required":false,"maxLength":130},"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},"testimonial":{"type":"object","description":"Testimonial configuration","fields":{"quote":{"type":"string","description":"Testimonial quote text","required":true},"author":{"type":"string","description":"Author name","required":true},"avatar":{"type":"object","description":"Author avatar image","fields":{"src":{"type":"string","description":"Image source URL","required":true},"alt":{"type":"string","description":"Alt text for accessibility","required":true},"href":{"type":"string","description":"Optional link URL","required":false},"className":{"type":"string","description":"Additional CSS classes for the image","required":false}},"typeLabel":"ImageItem","required":false}},"typeLabel":"TestimonialConfig","required":true,"mediaHints":{"path":"testimonial.avatars[].image","roles":["profile","avatar"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"small","required":false,"preferredAspect":"1:1","note":"Testimonial author avatar. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"testimonialSlot":{"type":"object","description":"Custom slot for testimonial (overrides testimonial prop)","typeLabel":"React.ReactNode","required":false},"gridImages":{"type":"array","description":"Grid images configuration (4 images for the grid)","items":{"type":"object","description":"","fields":{"src":{"type":"string","description":"Image source URL","required":true},"alt":{"type":"string","description":"Alt text for the image","required":false}},"typeLabel":"GridImageConfig"},"typeLabel":"GridImageConfig[]","required":true,"count":4,"minItems":4,"maxItems":4,"mediaHints":{"path":"gridImages[].src","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"medium","required":true,"note":"Grid showcase images. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"imagesSlot":{"type":"object","description":"Custom slot for images grid (overrides gridImages)","typeLabel":"React.ReactNode","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":"Background pattern","fields":{},"typeLabel":"PatternName","required":false},"patternOpacity":{"type":"number","description":"Pattern opacity (0-1)","required":false},"className":{"type":"string","description":"Additional CSS classes for the section wrapper","required":false},"containerClassName":{"type":"string","description":"Additional CSS classes for the 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},"optixFlowConfig":{"type":"object","description":"Optional Optix Flow configuration for image optimization","fields":{"apiKey":{"type":"string","description":"","required":true},"compression":{"type":"number","description":"","required":false}},"typeLabel":"{ apiKey: string; compression?: number; }","required":false},"logo":{"type":"object","description":"Brand logo configuration. LOGO MEDIA ONLY — do not use photos or hero images.","fields":{"url":{"type":"string","description":"URL to navigate to when logo is clicked","required":false},"src":{"type":"string","description":"Image source for the logo","required":false},"alt":{"type":"string","description":"Alt text for the logo image","required":false},"title":{"type":"object","description":"Text title to display (alternative to image)","typeLabel":"React.ReactNode","required":false},"className":{"type":"string","description":"Additional CSS classes for the logo","required":false}},"typeLabel":"LogoConfig","required":false},"logoSlot":{"type":"object","description":"Custom slot for logo (overrides logo prop)","typeLabel":"React.ReactNode","required":false},"logoClassName":{"type":"string","description":"Additional CSS classes for the logo container","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false}},"exampleProps":{"logo":{"src":"https://cdn.ing/assets/i/r/287634/e4cmvu8nbwoqy2qer90t4gpap0ed/logo-light.png","alt":"Brand Logo"},"heading":"Loved by customers worldwide","description":"See why thousands of businesses trust us.","testimonial":{"quote":"This platform transformed how we work.","author":"Sarah Johnson","role":"CEO","company":"TechCorp","avatars":[{"image":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","fallback":"SJ"}]},"gridImages":[{"src":"https://toastability-production.s3.amazonaws.com/g1iuifb3yzoofo9c7a00koyn6q1t","alt":"Customer 1"},{"src":"https://toastability-production.s3.amazonaws.com/z9u4sdrj2oq3eds0qyui0nxsus3j","alt":"Customer 2"},{"src":"https://toastability-production.s3.amazonaws.com/63aotyt2pb4gqpccej2kkw8reson","alt":"Customer 3"},{"src":"https://toastability-production.s3.amazonaws.com/pjgb223h1bjywdk15i3zi7pjhutg","alt":"Customer 4"}],"actions":[{"label":"Get Started","href":"#","variant":"default"}],"background":"dark"},"dependencies":["@opensite/ui"],"tags":["hero","testimonial","image","grid","reviews","customers","feedback","social-proof"],"performance":{},"importantUsageNotes":"Only use if you have a valid testimonial — DO NOT MAKE UP A TESTIMONIAL. Supply exactly 4 grid images. Do not exceed 50 characters for 'heading'. Do not exceed 130 characters for 'description'.  All media src values must be absolute URLs to real assets; relative paths and placeholder media variables are not allowed.","usageRequirements":{"requiredProps":["heading","testimonial","gridImages"],"propConstraints":{"heading":{"required":true,"maxLength":50},"description":{"maxLength":130},"testimonial":{"required":true,"note":"Must be a real, sourced testimonial. Do not fabricate."},"gridImages":{"required":true,"count":4,"minItems":4,"maxItems":4}},"mediaSlots":{"testimonial.avatars[].image":{"path":"testimonial.avatars[].image","roles":["profile","avatar"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"small","required":false,"preferredAspect":"1:1","note":"Testimonial author avatar. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."},"gridImages[].src":{"path":"gridImages[].src","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"medium","required":true,"note":"Grid showcase images. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"requiresSiteCapabilities":["media_library","reviews_or_testimonials"]}}},"timestamp":"2026-06-27T20:16:21.924Z"}