{"success":true,"data":{"block":{"id":"hero-mentorship-video-split","name":"Mentorship Video Split Hero","title":"Hero Mentorship Video Split","category":"Hero","categorySlug":"hero","description":"A split-layout hero for mentorship platforms with video preview. Features career growth messaging and video CTA.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/308206/ouhz733qne0ysdb9kq7y2tx0iv3l/mentorship-landing-page-hero-with-cta-and-lifestyle-photo.jpg","mobile":"https://cdn.ing/assets/i/r/308207/myv2jvb1i39eo91ge86dgu5q2ora/mentorship-hero-lifestyle-portrait-in-bar-setting.jpg"},"componentPath":"blocks/hero/hero-mentorship-video-split.tsx","code":"import { HeroMentorshipVideoSplit } from \"@opensite/ui/blocks/hero/hero-mentorship-video-split\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <HeroMentorshipVideoSplit\n      heading=\"Learn from industry experts\"\n      description=\"Get personalized guidance from experienced professionals who have walked the path before you. Accelerate your growth with 1-on-1 mentorship.\"\n      action={{\n        label: \"Find a Mentor\",\n        href: \"#\",\n        variant: \"default\",\n        asButton: true,\n        iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n      }}\n      videoLabel=\"Watch success stories\"\n      videoTitle=\"Mentorship Success Stories\"\n      modalVideo={{\n        image: {\n          src: \"https://toastability-production.s3.amazonaws.com/z37cidvud212bzqhhalrhvk7ipaa\",\n          alt: \"Mentorship video\",\n        },\n        video: {\n          src: \"https://toastability-production.s3.amazonaws.com/4kox2ux0ye1wlqkdwg03s08a67i1\",\n        },\n      }}\n      image={{\n        src: \"https://toastability-production.s3.amazonaws.com/pfllskt7q7144l288lrnpc6gx606\",\n        alt: \"Video Showcase\",\n      }}\n      background=\"dark\"\n    />\n  );\n}","propsSchema":{"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":true,"maxLength":60},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false,"maxLength":220},"action":{"type":"object","description":"Action configuration for CTA button","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","required":false},"actionSlot":{"type":"object","description":"Custom slot for action (overrides action prop)","typeLabel":"React.ReactNode","required":false},"videoLabel":{"type":"object","description":"Video section label text","typeLabel":"React.ReactNode","required":false},"modalVideo":{"type":"object","description":"Video configuration for modal/dialog","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__default.ComponentPropsWithoutRef","required":false},"video":{"type":"object","description":"Video configuration using","typeLabel":"React__default.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,"mediaHints":{"path":"modalVideo.image.src","roles":["video-thumbnail","hero","feature"],"disallowedRoles":["logo","favicon"],"minPixelClass":"medium","note":"Poster image shown before the video plays. IMAGE MEDIA ONLY."}},"videoTitle":{"type":"string","description":"Video dialog title","required":false},"videoThumbnail":{"type":"object","description":"","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},"videoUrl":{"type":"string","description":"","required":false},"videoSlot":{"type":"object","description":"Custom slot for video section (overrides video props)","typeLabel":"React.ReactNode","required":false},"image":{"type":"object","description":"Main feature 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":true,"mediaHints":{"path":"image","roles":["hero","feature","profile"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":true,"note":"Main hero image slot. IMAGE MEDIA ONLY. Do not assign a video URL here."}},"imageSlot":{"type":"object","description":"Custom slot for image (overrides image prop)","typeLabel":"React.ReactNode","required":false},"background":{"type":"string","description":"","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","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},"containerClassName":{"type":"string","description":"Additional CSS classes for the container","required":false},"contentClassName":{"type":"string","description":"Additional CSS classes for the content column","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},"imageClassName":{"type":"string","description":"Additional CSS classes for the image","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},"videoAspectRatio":{"type":"string","description":"Video aspect ratio","typeLabel":"\"horizontal\" | \"vertical\"","required":false},"modalVideo.video.src":{"type":"object","description":""},"modalVideo.image.src":{"type":"object","description":""}},"exampleProps":{"heading":"Reclaim Your Peace. Scale Sustainably.","description":"Somatic mindset coaching for high-achieving entrepreneurs ready to lead from strength — not survival mode.","action":{"label":"Book Your Discovery Call","href":"/contact","variant":"default","size":"lg"},"videoLabel":"Watch the Overview","videoTitle":"Coaching Overview","modalVideo":{"image":{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Coaching overview poster"},"video":{"src":"https://toastability-production.s3.amazonaws.com/4kox2ux0ye1wlqkdwg03s08a67i1"}},"image":{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Coach portrait"},"background":"dark"},"dependencies":["@opensite/ui"],"tags":["hero","mentorship","video","split","career","growth","education","coaching"],"performance":{},"importantUsageNotes":"The 'image' prop is the main hero image and MUST be an image asset (poster/photo). The 'modalVideo' prop's nested 'video.src' MUST be a video asset (HLS playlist or MP4) and 'modalVideo.image.src' MUST be an image asset (video poster). NEVER swap these: do not put a video URL into the 'image' prop and do not put an image URL into 'modalVideo.video.src'. All media src values must be absolute URLs to real CDN assets — never relative paths or placeholder strings. Keep 'heading' concise (under 60 characters) for visual balance.","usageRequirements":{"requiredProps":["heading","image"],"propConstraints":{"heading":{"required":true,"maxLength":60},"description":{"maxLength":220},"image":{"required":true,"note":"Main hero image. Must be an image asset (jpg/png/webp), NOT a video URL."},"modalVideo.video.src":{"note":"Must be a video asset URL (HLS .m3u8 master playlist or .mp4). Must NOT be an image URL."},"modalVideo.image.src":{"note":"Video poster image. Must be an image asset, NOT a video URL."}},"mediaSlots":{"image":{"path":"image","roles":["hero","feature","profile"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":true,"note":"Main hero image slot. IMAGE MEDIA ONLY. Do not assign a video URL here."},"modalVideo.video.src":{"path":"modalVideo.video.src","roles":[],"disallowedRoles":["logo","favicon","hero","feature","profile"],"note":"VIDEO MEDIA ONLY (HLS master playlist or MP4). Do not assign an image URL here."},"modalVideo.image.src":{"path":"modalVideo.image.src","roles":["video-thumbnail","hero","feature"],"disallowedRoles":["logo","favicon"],"minPixelClass":"medium","note":"Poster image shown before the video plays. IMAGE MEDIA ONLY."}},"requiresSiteCapabilities":["media_library"],"notes":["Image and video media must never be swapped between the 'image' prop and the 'modalVideo' prop.","All media src values must be absolute URLs to real assets; relative paths are not allowed."]}}},"timestamp":"2026-06-27T20:14:34.523Z"}