{"success":true,"data":{"block":{"id":"hero-conversion-video-play","name":"Conversion Video Play Hero","title":"Hero Conversion Video Play","category":"Hero","categorySlug":"hero","description":"A conversion-focused hero with a prominent video play button and brand logos. Designed to drive engagement and conversions.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/308473/uqkc9wvusu3eu5pl8fr4w2bzw7ah/hero-conversion-video-play-desktop.jpg","mobile":"https://cdn.ing/assets/i/r/308474/acnabdqy2z5sw44jv353xj608myl/hero-conversion-video-play-mobile.jpg"},"componentPath":"blocks/hero/hero-conversion-video-play.tsx","code":"import { HeroConversionVideoPlay } from \"@opensite/ui/blocks/hero/hero-conversion-video-play\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nimport {\n  loadSkinFromJsDelivr,\n  resolveVideoClasses,\n  getSkinStyleObject,\n} from \"@page-speed/skins\";\nconst skin = await loadSkinFromJsDelivr(\n  \"0.1.2\",\n  \"skins/video/youtube-classic.json\",\n);\n\nconst skinClasses = resolveVideoClasses(skin);\nconst skinStyle = getSkinStyleObject(skin);\n\nexport default function Demo() {\n  return (\n    <HeroConversionVideoPlay\n      heading=\"Turn visitors into customers\"\n      description=\"Optimize your conversion funnel with data-driven insights and smart automation. See how top companies boost conversions by 300%.\"\n      primaryAction={{\n        label: \"Get Started\",\n        href: \"#\",\n        variant: \"default\",\n        iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n      }}\n      videoButtonLabel=\"Watch Demo\"\n      modalVideo={{\n        video: {\n          masterPlaylistUrl:\n            \"https://octane.cdn.ing/api/v1/video/01db8743-8d85-50e5-a293-7d0f0f000db3/master_playlist\",\n          fallbackSrc:\n            \"https://octane.cdn.ing/api/v1/video/01db8743-8d85-50e5-a293-7d0f0f000db3/progressive.mp4\",\n          src: \"https://toastability-production.s3.amazonaws.com/e6b0u26kl3g06gooq2voz48xzh3z\",\n          poster:\n            \"https://cdn.ing/assets/i/r/209106/variants/i86gmxxj6rpf6i1pisg9o3l2ycsp/ffa771bd373b30a1a63111797ef5dd88627acefa289ede100f7c545462724c63/354071-nightlife-bar-smiling-talking-by-azulroto-artlist-4k.webp\",\n          optixFlowApiKey: \"os-bcf1c82f-0c47-49ec-a303-807eec0a25c6\",\n          skinClasses: skinClasses,\n          skinStyle: skinStyle,\n        },\n      }}\n      videoDialogTitle=\"Conversion Optimization Demo\"\n      logos={[\n        { src: \"https://cdn.ing/assets/i/r/288963/4kq4loxmhh5lwc7scw7hhusu87km/ui-placeholder-logo-white-1.png\", alt: \"Partner 1\" },\n        { src: \"https://cdn.ing/assets/i/r/288966/0ls9to9jqnrc4gcxty9rx2c4udjv/ui-placeholder-logo-white-2.png\", alt: \"Partner 2\" },\n        { src: \"https://cdn.ing/assets/i/r/288971/sow5o2s8dp1cr159rxexm0yhov5w/ui-placeholder-logo-white-3.png\", alt: \"Partner 3\" },\n        { src: \"https://cdn.ing/assets/i/r/288969/h9k3b0ett73u3pouc2w15ibvl7tc/ui-placeholder-logo-white-4.png\", alt: \"Partner 4\" },\n        { src: \"https://cdn.ing/assets/i/r/288967/cn6z89c4c23ubohkz6kv3npdn672/ui-placeholder-logo-white-5.png\", alt: \"Partner 5\" },\n        { src: \"https://cdn.ing/assets/i/r/288973/lxkmf98s3bmpytziacx1o0rwuun9/ui-placeholder-logo-white-6.png\", alt: \"Partner 6\" },\n      ]}\n      background=\"dark\"\n      pattern=\"grid1\"\n      patternOpacity={0.1}\n    />\n  );\n}","propsSchema":{"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":true,"maxLength":40},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false,"maxLength":130},"primaryAction":{"type":"object","description":"Primary action configuration","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},"videoButtonLabel":{"type":"object","description":"Video play button label","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":true,"mediaHints":{"path":"modalVideo.video","roles":[],"disallowedRoles":["logo","favicon","hero","feature","profile","thumbnail"],"note":"VIDEO MEDIA ONLY. Must be an HLS playlist or MP4 URL, not an image URL."}},"videoDialogTitle":{"type":"string","description":"Video dialog title","required":false},"videoUrl":{"type":"string","description":"","required":false},"actionsSlot":{"type":"object","description":"Custom slot for actions (overrides primaryAction and video button)","typeLabel":"React.ReactNode","required":false},"image":{"type":"object","description":"Main image configuration","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,"mediaHints":{"path":"image.src","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":false,"note":"Optional hero side image. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"imageSlot":{"type":"object","description":"Custom slot for image (overrides image)","typeLabel":"React.ReactNode","required":false},"logosTagline":{"type":"object","description":"Logos tagline text","typeLabel":"React.ReactNode","required":false},"logos":{"type":"array","description":"Array of logo items","items":{"type":"object","description":"","fields":{"src":{"type":"object","description":"Image source URL or light/dark mode variants","typeLabel":"string | { light: string; dark?: string; }","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 logo wrapper","required":false},"imgClassName":{"type":"string","description":"Additional CSS classes for the img element","required":false}},"typeLabel":"LogoItem"},"typeLabel":"LogoItem[]","required":false,"minItems":3,"maxItems":8,"mediaHints":{"path":"logos[]","roles":["logo"],"disallowedRoles":["favicon","video-thumbnail"],"minPixelClass":"small","required":false,"note":"Partner or customer logos. LOGO IMAGE ONLY. Do not use photos, favicons, or video assets."}},"logosSlot":{"type":"object","description":"Custom slot for logos (overrides logos array)","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":"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 area","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},"actionsClassName":{"type":"string","description":"Additional CSS classes for the actions container","required":false},"imageClassName":{"type":"string","description":"Additional CSS classes for the image container","required":false},"logosClassName":{"type":"string","description":"Additional CSS classes for the logos container","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}},"exampleProps":{"logo":{"src":"https://cdn.ing/assets/i/r/287634/e4cmvu8nbwoqy2qer90t4gpap0ed/logo-light.png","alt":"Brand Logo"},"heading":"Turn visitors into customers","description":"Optimize your conversion funnel with data-driven insights.","primaryAction":{"label":"Get Started","href":"#","variant":"default"},"videoButtonLabel":"Watch Demo","modalVideo":{"video":{"masterPlaylistUrl":"https://cdn.ing/assets/video/uploads/283393/hls/38865/master.m3u8","fallbackSrc":"https://toastability-production.s3.amazonaws.com/4kox2ux0ye1wlqkdwg03s08a67i1"}},"videoDialogTitle":"Conversion Optimization Demo","background":"dark"},"dependencies":["@opensite/ui"],"tags":["hero","conversion","video","play","engagement","logos","cta","marketing"],"performance":{},"importantUsageNotes":"Only use if you have a 'modalVideo.video' prop object with a real video URL. Do not exceed 40 characters for 'heading'. Do not exceed 130 characters for 'description'. Supply logos only if you have real partner/customer logos.  All media src values must be absolute URLs to real assets; relative paths and placeholder media variables are not allowed.","usageRequirements":{"requiredProps":["heading","modalVideo"],"propConstraints":{"heading":{"required":true,"maxLength":40},"description":{"maxLength":130},"modalVideo":{"required":true,"note":"Must contain a valid video object."},"logos":{"minItems":3,"maxItems":8}},"mediaSlots":{"modalVideo.video":{"path":"modalVideo.video","roles":[],"disallowedRoles":["logo","favicon","hero","feature","profile","thumbnail"],"note":"VIDEO MEDIA ONLY. Must be an HLS playlist or MP4 URL, not an image URL."},"image.src":{"path":"image.src","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":false,"note":"Optional hero side image. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."},"logos[]":{"path":"logos[]","roles":["logo"],"disallowedRoles":["favicon","video-thumbnail"],"minPixelClass":"small","required":false,"note":"Partner or customer logos. LOGO IMAGE ONLY. Do not use photos, favicons, or video assets."}},"requiresSiteCapabilities":["media_library"]}}},"timestamp":"2026-06-27T20:08:07.485Z"}