{"success":true,"data":{"block":{"id":"testimonials-split-image","name":"Testimonials Split Layout with Image","title":"Testimonials Split Image","category":"Testimonials","categorySlug":"testimonials","description":"A split-screen testimonial layout with a large image on one side and quote content on the other. Configurable image position (left/right). Features decorative quote icon, large typography, and author attribution. Perfect for impactful single testimonial displays on landing pages.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/293183/yl4ha8bq98w83kb8k84fms6eaz0l/cleanshot-2026-03-05-at-08-19-37.png","mobile":"https://cdn.ing/assets/i/r/293182/u9a9zo5gp8uxhnjakurz3bhezp3r/cleanshot-2026-03-05-at-08-19-55.png"},"componentPath":"blocks/testimonials/testimonials-split-image.tsx","code":"import { TestimonialsSplitImage } from \"@opensite/ui/blocks/testimonials/testimonials-split-image\";\n\nexport default function Demo() {\n  return (\n    <TestimonialsSplitImage\n      testimonial={{\n        quote:\n          \"This platform represents everything we were looking for - powerful features, intuitive design, and exceptional performance. The transformation in our workflow has been nothing short of remarkable.\",\n        author: \"Dr. Jonathan Parker\",\n        role: \"Chief Technology Officer\",\n        company: \"TechVision Enterprises\",\n        avatarSrc: \"https://toastability-production.s3.amazonaws.com/ssgb7unxdwdqokfvhkp7cok2v79s\",\n      }}\n      imageSrc={\"https://toastability-production.s3.amazonaws.com/t3k42fbzq7r7j93feldqm5cj1o1n\"}\n      imageAlt=\"Modern office workspace\"\n      background=\"gray\"\n      pattern=\"diagonalCrossBasic\"\n      patternOpacity={0.9}\n      spacing=\"xl\"\n      imagePosition=\"right\"\n    />\n  );\n}","propsSchema":{"testimonial":{"type":"object","description":"Testimonial data using shared TestimonialItem type","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__default.ReactNode","required":true},"href":{"type":"string","description":"","required":true},"className":{"type":"string","description":"","required":false}},"typeLabel":"{ label: React__default.ReactNode; href: string; className?: string; }","required":false}},"typeLabel":"TestimonialItem","required":true,"mediaHints":{"path":"testimonial.avatarSrc","roles":["profile","avatar"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"small","required":false,"preferredAspect":"1:1","note":"Author headshot. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"testimonialSlot":{"type":"object","description":"Custom slot for rendering testimonial (overrides testimonial prop)","typeLabel":"React.ReactNode","required":false},"imageSrc":{"type":"string","description":"Featured image URL","required":true,"mediaHints":{"path":"imageSrc","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":true,"note":"Feature photograph occupying half the split layout. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"imageAlt":{"type":"string","description":"Featured image alt text","required":false},"imagePosition":{"type":"string","description":"Position of the image relative to content","typeLabel":"\"left\" | \"right\"","enum":["left","right"],"required":false},"className":{"type":"string","description":"Additional CSS classes for the section wrapper","required":false},"gridClassName":{"type":"string","description":"Additional CSS classes for the grid container","required":false},"imageClassName":{"type":"string","description":"Additional CSS classes for the image container","required":false},"contentClassName":{"type":"string","description":"Additional CSS classes for the content container","required":false},"quoteIconClassName":{"type":"string","description":"Additional CSS classes for the quote icon","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","enum":["default","white","gray","dark","gradient","primary","secondary","transparent","muted"],"required":false},"spacing":{"type":"string","description":"Vertical spacing for the section","typeLabel":"SectionSpacing","enum":["none","sm","md","lg","xl","hero"],"required":false},"pattern":{"type":"string","description":"Optional background pattern name or URL","typeLabel":"PatternName","enum":["squareAltGrid","grid1","noise","dotPattern","dotPattern2","circles","waves","crossPattern","architect","tinyCheckers","p6","dots","circuitBoardBasic","circuitBoardFadeTop","circuitBoardFadeBottom","circuitBoardFadeCenter","circuitBoardFadeTopLeft","circuitBoardFadeTopRight","circuitBoardFadeBottomLeft","circuitBoardFadeBottomRight","dashedGridBasic","dashedGridFadeTop","dashedGridFadeBottom","dashedGridFadeCenter","dashedGridFadeTopLeft","dashedGridFadeTopRight","dashedGridFadeBottomLeft","dashedGridFadeBottomRight","diagonalCrossBasic","diagonalCrossFadeTop","diagonalCrossFadeBottom","diagonalCrossFadeCenter","diagonalCrossFadeTopLeft","diagonalCrossFadeTopRight","diagonalCrossFadeBottomLeft","diagonalCrossFadeBottomRight","gridBasic","gridFadeTop","gridFadeBottom","gridFadeCenter","gridFadeTopLeft","gridFadeTopRight","gridFadeBottomLeft","gridFadeBottomRight","gridDotsBasic","gridDotsFadeCenter","gradientGlowTop","gradientGlowBottom","spotlightLeft","spotlightRight","radialGradientTop","radialGradientBottom"],"required":false},"patternOpacity":{"type":"number","description":"Pattern overlay opacity (0-1)","required":false},"optixFlowConfig":{"type":"object","description":"OptixFlow image optimization configuration","fields":{"apiKey":{"type":"string","description":"API key for OptixFlow service","required":true},"compression":{"type":"number","description":"Compression level (0-100)","required":false}},"typeLabel":"OptixFlowConfig","required":false},"containerClassName":{"type":"string","description":"Additional CSS classes for the container","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false},"testimonial.quote":{"type":"object","description":"","required":true,"maxLength":500},"testimonial.author":{"type":"object","description":"","required":true}},"exampleProps":{"testimonial":{"quote":"This platform represents everything we were looking for — powerful features, intuitive design, and exceptional performance. The transformation in our workflow has been nothing short of remarkable.","author":"Dr. Jonathan Parker","role":"Chief Technology Officer","company":"TechVision Enterprises","avatarSrc":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp"},"imageSrc":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","imageAlt":"Modern office workspace","imagePosition":"right"},"dependencies":["@opensite/ui"],"tags":["testimonials","split","image","two-column","featured","large","hero","impactful"],"performance":{},"importantUsageNotes":"Testimonials must come from real, sourced reviews or testimonials. Do not fabricate quotes, names, or company affiliations. imageSrc is a large feature photograph occupying half the layout — use professional business/workspace photography. imagePosition controls whether the photo is left or right of the quote. Dynamic feeds (Phase 2): this block can carry a block-level dataSource of type 'testimonials_feed', hydrated at routing-build time into TestimonialItem[]. Bind target (dataSource.bindTo) defaults to 'testimonials'; use 'reviews' for testimonials-list-verified, testimonials-images-helpful, and testimonials-grid-add-review; single-item 'testimonial' (an object — the hydrator binds items[0]) for testimonials-company-logo, testimonials-large-quote, and testimonials-split-image. Wire mapping: content -> quote, reviewer_name -> author, rating -> rating (only when numeric; never fabricate), profile_url + platform -> linkConfig. Avatars are intentionally NOT mapped in Phase 2 because review avatar URLs are hotlinked and rot-prone. The reviews_or_testimonials capability is satisfied by live reviews OR authored static quotes, so octane does not hard-drop testimonials blocks on the capability alone.","usageRequirements":{"requiredProps":["testimonial","imageSrc"],"propConstraints":{"testimonial.quote":{"required":true,"maxLength":500},"testimonial.author":{"required":true},"imageSrc":{"required":true,"note":"Large feature photograph for the split layout."},"imagePosition":{"note":"\"left\" | \"right\". Default \"right\"."}},"mediaSlots":{"testimonial.avatarSrc":{"path":"testimonial.avatarSrc","roles":["profile","avatar"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"small","required":false,"preferredAspect":"1:1","note":"Author headshot. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."},"imageSrc":{"path":"imageSrc","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":true,"note":"Feature photograph occupying half the split layout. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"requiresSiteCapabilities":["reviews_or_testimonials"],"notes":["All media src values must be absolute URLs to real assets; relative paths and placeholder media variables are not allowed."]}}},"timestamp":"2026-08-27T08:33:07.643Z"}