{"success":true,"data":{"block":{"id":"faq-split-hero","name":"FAQ Split Hero","title":"FAQ Split Hero","category":"Faq","categorySlug":"faq","description":"A full-width split-screen FAQ section with animated accordion on one side and image or video media on the other. Supports configurable layout direction for desktop (media left/right) and mobile stacking order (media top/bottom), pattern background overlays with adjustable opacity, section background theming, image optimization via OptixFlow, and extensive className overrides for every sub-element. Media supports both images and videos with a slot escape hatch for fully custom rendering. Best for landing pages, product pages, and service pages requiring prominent FAQ visibility.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/289196/xk66t2zn1us5qilsefy3mvtsetc6/blocks-faq-split-hero-desktop.png","mobile":"https://cdn.ing/assets/i/r/289195/bvjdqx7m8k6ppvpo1fqldpojdt3f/blocks-faq-split-hero-mobile.png"},"componentPath":"blocks/faq/faq-split-hero.tsx","code":"import { imagePlaceholders } from \"@/lib/media\";\nimport { FaqSplitHero } from \"@opensite/ui/blocks/faq/faq-split-hero\";\n\nexport default function Demo() {\n  return (\n    <FaqSplitHero\n      heading=\"Common Questions\"\n      subheading=\"Everything you need to know about our platform, features, and pricing.\"\n      items={[\n        {\n          id: \"demo\",\n          question: \"Can I schedule a demo?\",\n          answer:\n            \"Yes, we offer personalized demos for teams of 5 or more. Our product specialists will walk you through features, answer questions, and show you how to maximize value for your use case.\",\n        },\n        {\n          id: \"trial-limits\",\n          question: \"Are there any limitations on the free trial?\",\n          answer:\n            \"The 14-day trial includes full access to Professional plan features with no user limits. The only restriction is that trial data is deleted if you don't upgrade within 30 days.\",\n        },\n        {\n          id: \"switching\",\n          question: \"How easy is it to switch from competitors?\",\n          answer:\n            \"We make switching easy with automated data import tools, migration guides, and dedicated onboarding support. Most teams complete the switch in under a week with zero data loss.\",\n        },\n        {\n          id: \"updates\",\n          question: \"How often do you release updates?\",\n          answer:\n            \"We ship new features and improvements every two weeks. Security patches and bug fixes are deployed immediately. All updates are seamless with no downtime or manual upgrades required.\",\n        },\n      ]}\n      mediaItem={{\n        video: {\n          // masterPlaylistUrl:\n          //   \"https://octane.cdn.ing/api/v1/video/b268d45d-175a-5c42-bb0d-207c38f384e2/master_playlist\",\n          // src: \"https://toastability-production.s3.amazonaws.com/c654ma8l6buzf82lngt5yq2fxoao\",\n          masterPlaylistUrl:\n            \"https://octane.cdn.ing/api/v1/video/5ae48b81-2a69-5108-aeaa-4fa947f8d48d/master_playlist\",\n          fallbackSrc:\n            \"https://octane.cdn.ing/api/v1/video/5ae48b81-2a69-5108-aeaa-4fa947f8d48d/progressive.mp4\",\n          autoPlay: true,\n          loop: true,\n          muted: true,\n          playsInline: true,\n          controls: false,\n        },\n      }}\n      pattern=\"diagonalCrossFadeTopLeft\"\n      patternOpacity={0.09}\n      background=\"dark\"\n    />\n  );\n}","propsSchema":{"heading":{"type":"object","description":"Main heading text","typeLabel":"React.ReactNode","required":false},"subheading":{"type":"object","description":"Subheading/description text","typeLabel":"React.ReactNode","required":false},"items":{"type":"array","description":"Array of FAQ items","items":{"type":"object","description":"","fields":{"question":{"type":"object","description":"","typeLabel":"React.ReactNode","required":true},"answer":{"type":"object","description":"","typeLabel":"React.ReactNode","required":true}},"typeLabel":"FaqItem"},"typeLabel":"FaqItem[]","required":false},"itemsSlot":{"type":"object","description":"Custom slot for rendering items (overrides items array)","typeLabel":"React.ReactNode","required":false},"mediaItem":{"type":"object","description":"Media item configuration for image and/or video rendering.","fields":{"image":{"type":"object","description":"Image configuration using standard React img attributes.\nWhen both image and video are provided, image may serve as a poster/fallback.","typeLabel":"React.ComponentPropsWithoutRef","required":false},"video":{"type":"object","description":"Video configuration using","typeLabel":"React.ComponentPropsWithoutRef<\"video\"> & { /** * Direct HLS master playlist URL (skips transform call) */ masterPlaylistUrl?: string; /** * Fallback progressive MP4 URL if HLS fails */ fallbackSrc?: string; /** * OptixFlow API key for poster optimization */ optixFlowApiKey?: string; /** * Skin classes for custom controls (from @page-speed/skins) */ skinClasses?: { container?: string; video?: string; controlsBar?: string; playButton?: string; timeline?: string; timelineProgress?: string; timelineBuffered?: string; timeText?: string; volumeControl?: string; fullscreenButton?: string; settingsButton?: string; loadingSpinner?: string; playOverlay?: string; playOverlayButton?: string; }; /** * CSS custom properties from skin tokens */ skinStyle?: Record<string, string>; /** * Enable debug logging */ debug?: boolean; }","required":false},"containerClassName":{"type":"string","description":"Additional CSS classes for the media container element.","required":false}},"typeLabel":"MediaItem","required":false},"mediaSlot":{"type":"object","description":"Custom slot for rendering the media section (overrides mediaItem)","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.\nDefaults to \"none\" since this block manages its own internal spacing.","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},"className":{"type":"string","description":"Additional CSS classes for the section","required":false},"contentClassName":{"type":"string","description":"Additional CSS classes for the content area","required":false},"headerClassName":{"type":"string","description":"Additional CSS classes for the header wrapper","required":false},"headingClassName":{"type":"string","description":"Additional CSS classes for the heading","required":false},"subheadingClassName":{"type":"string","description":"Additional CSS classes for the subheading","required":false},"accordionClassName":{"type":"string","description":"Additional CSS classes for the accordion","required":false},"accordionItemClassName":{"type":"string","description":"Additional CSS classes for accordion items","required":false},"accordionTriggerClassName":{"type":"string","description":"Additional CSS classes for accordion triggers","required":false},"accordionContentClassName":{"type":"string","description":"Additional CSS classes for accordion content","required":false},"optixFlowConfig":{"type":"object","description":"Optional Optix Flow configuration for image optimization","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},"directionConfig":{"type":"object","description":"Direction configuration for desktop and mobile layouts","fields":{"desktop":{"type":"string","description":"","typeLabel":"\"mediaRight\" | \"mediaLeft\"","required":true},"mobile":{"type":"string","description":"","typeLabel":"\"mediaTop\" | \"mediaBottom\"","required":true}},"typeLabel":"DirectionConfig","required":false},"containerClassName":{"type":"string","description":"Additional CSS classes for the container","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false}},"defaultProps":{},"dependencies":["@opensite/ui"],"tags":["faq","split","hero","accordion","animated","landing","questions","full-width","split-screen","image","video","media","responsive","layout-direction","pattern-background","customizable","two-column"],"performance":{},"importantUsageNotes":"Use between 4-6 'items' for this split hero accordion layout; the accordion shares the viewport with a media panel so keep the list concise. Each item requires a unique 'id', a 'question', and an 'answer'. Always supply a 'mediaItem' with a real image or video — DO NOT USE this block if you don't have a valid media asset. Follow the example props closely for this block."}},"timestamp":"2026-05-13T10:40:40.106Z"}