{"success":true,"data":{"block":{"id":"hero-productivity-launcher-video","name":"Productivity Launcher Video Hero","title":"Hero Productivity Launcher Video","category":"Hero","categorySlug":"hero","description":"A hero for productivity apps with video background and download buttons. Features app store badges and launcher-style design.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290310/p9mbyd57q1ae33qrq7kv25w2forx/cleanshot-2026-02-18-at-05-43-19.png","mobile":"https://cdn.ing/assets/i/r/290309/c8xq5jx0mxbzr0x3tmb6mo2fivmw/cleanshot-2026-02-18-at-05-43-27.png"},"componentPath":"blocks/hero/hero-productivity-launcher-video.tsx","code":"import { HeroProductivityLauncherVideo } from \"@opensite/ui/blocks/hero/hero-productivity-launcher-video\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <HeroProductivityLauncherVideo\n      heading=\"Supercharge your productivity\"\n      description=\"The ultimate productivity launcher for modern professionals. Access everything you need with a single keystroke.\"\n      actions={[\n        {\n          label: \"Download Free\",\n          href: \"#\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/download\" size={16} />,\n        },\n        {\n          label: \"Watch Tour\",\n          href: \"#\",\n          variant: \"outline\",\n          icon: <DynamicIcon name=\"lucide/play-circle\" size={16} />,\n        },\n      ]}\n      videoSrc={\"https://toastability-production.s3.amazonaws.com/4kox2ux0ye1wlqkdwg03s08a67i1\"}\n      versionInfo={{\n        version: \"v2.0\",\n        osRequirement: \"All platforms\",\n      }}\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},"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,"maxItems":2,"pinnedValues":{"0.variant":"default","1.variant":"outline"}},"actionsSlot":{"type":"object","description":"Custom slot for rendering actions (overrides actions array)","typeLabel":"React.ReactNode","required":false},"versionInfo":{"type":"object","description":"Version information display","fields":{"version":{"type":"string","description":"Version number (e.g., \"v1.87.5\")","required":false},"osRequirement":{"type":"string","description":"OS requirement (e.g., \"macOS 12+\")","required":false},"installMethod":{"type":"string","description":"Install method text (e.g., \"Install via homebrew\")","required":false},"installAction":{"type":"object","description":"Install method action","typeLabel":"() => void","required":false}},"typeLabel":"VersionInfo","required":false},"versionInfoSlot":{"type":"object","description":"Custom slot for version info (overrides versionInfo prop)","typeLabel":"React.ReactNode","required":false},"backgroundVideo":{"type":"object","description":"Background video configuration","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":"backgroundVideo.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."}},"videoSlot":{"type":"object","description":"Custom slot for video (overrides backgroundVideo prop)","typeLabel":"React.ReactNode","required":false},"videoSrc":{"type":"string","description":"","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},"containerClassName":{"type":"string","description":"Additional CSS classes for the container","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},"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},"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":"Supercharge your productivity","description":"The ultimate productivity launcher for modern professionals.","backgroundVideo":{"video":{"masterPlaylistUrl":"https://cdn.ing/assets/video/uploads/283393/hls/38865/master.m3u8","fallbackSrc":"https://toastability-production.s3.amazonaws.com/4kox2ux0ye1wlqkdwg03s08a67i1"}},"versionInfo":{"version":"v2.0","osRequirement":"All platforms"},"actions":[{"label":"Download Free","href":"#","variant":"default"},{"label":"Watch Tour","href":"#","variant":"outline"}]},"dependencies":["@opensite/ui"],"tags":["hero","productivity","launcher","video","download","app","mobile","desktop"],"performance":{},"importantUsageNotes":"Only use when you have a real video for 'backgroundVideo'. Do not exceed 40 characters for 'heading'. Do not exceed 130 characters for 'description'. If you supply multiple 'actions', use 'default' for the first and 'outline' for the second.  All media src values must be absolute URLs to real assets; relative paths and placeholder media variables are not allowed.","usageRequirements":{"requiredProps":["heading"],"propConstraints":{"heading":{"required":true,"maxLength":40},"description":{"maxLength":130},"actions":{"maxItems":2,"pinnedValues":{"0.variant":"default","1.variant":"outline"}}},"mediaSlots":{"backgroundVideo.video":{"path":"backgroundVideo.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."}},"requiresSiteCapabilities":["media_library"]}}},"timestamp":"2026-06-27T20:18:40.485Z"}