{"success":true,"data":{"block":{"id":"hero-video-overlay-stars","name":"Video Overlay Stars Hero","title":"Hero Video Overlay Stars","category":"Hero","categorySlug":"hero","description":"A hero with video overlay, star rating, and testimonial. Combines video content with social proof elements.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290340/sqea7vkk446xfgnzk4lwx1e38sdl/cleanshot-2026-02-18-at-08-57-11.png","mobile":"https://cdn.ing/assets/i/r/290339/869rctro6gur2nq38vdo48smt9v5/cleanshot-2026-02-18-at-08-57-21.png"},"componentPath":"blocks/hero/hero-video-overlay-stars.tsx","code":"import { masterPlaylistUrls, videoPlaceholders } from \"@/lib/media\";\nimport { HeroVideoOverlayStars } from \"@opensite/ui/blocks/hero/hero-video-overlay-stars\";\n\nexport default function Demo() {\n  return (\n    <HeroVideoOverlayStars\n      heading=\"Testimonials\"\n      description=\"Our CRM solution is designed to streamline your business operations and improve efficiency.\"\n      actions={[\n        {\n          label: \"Try It Free\",\n          href: \"#\",\n          icon: \"lucide/arrow-right\",\n        },\n      ]}\n      backgroundVideo={{\n        video: {\n          masterPlaylistUrl:\n            \"https://octane.cdn.ing/api/v1/video/58e2b1e3-e1e2-50ee-81e3-62ff540b6115/master_playlist\",\n          fallbackSrc:\n            \"https://octane.cdn.ing/api/v1/video/58e2b1e3-e1e2-50ee-81e3-62ff540b6115/progressive.mp4\",\n          src: \"https://toastability-production.s3.amazonaws.com/7bjxoh95etcr699ztg0593d043gq\",\n          optixFlowApiKey: \"os-bcf1c82f-0c47-49ec-a303-807eec0a25c6\",\n        },\n      }}\n      trust={{\n        starCount: 5,\n        message: \"Trusted by 2,500+ customers worldwide\",\n      }}\n    />\n  );\n}","propsSchema":{"heading":{"type":"object","description":"Main heading text","typeLabel":"React.ReactNode","required":false},"actions":{"type":"array","description":"Action buttons configuration","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},"actionsSlot":{"type":"object","description":"Custom slot for actions (overrides action prop)","typeLabel":"React.ReactNode","required":false},"trust":{"type":"object","description":"Trust/rating section configuration","fields":{"starCount":{"type":"number","description":"Number of stars to display","required":false},"message":{"type":"string","description":"Trust message text","required":false}},"typeLabel":"TrustConfig","required":false},"trustSlot":{"type":"object","description":"Custom slot for trust section (overrides trust prop)","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 wrapper","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},"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.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},"videoSlot":{"type":"object","description":"Custom slot for video background (overrides backgroundVideo)","typeLabel":"React.ReactNode","required":false},"videoSrc":{"type":"string","description":"","required":false},"actionsClassName":{"type":"string","description":"Additional CSS classes for the actions container","required":false},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false},"descriptionClassName":{"type":"string","description":"Additional CSS classes for the description","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false}},"defaultProps":{},"dependencies":["@opensite/ui"],"tags":["hero","video","overlay","stars","rating","testimonial","social-proof","reviews"],"performance":{},"importantUsageNotes":"Only populate the 'trust' prop if you have actual rating data to display. Only use if the media query returns a video that is appropriate for the backgroundVideo (b-roll style video). Do not exceed 40 characters for the 'heading' prop. Do not exceed 130 characters for the 'description' prop. If you supply multiple 'actions', ensure to use a variant of 'default' for the first action, and 'outline' for the second action to ensure proper visual distinction between the two CTAs."}},"timestamp":"2026-05-13T10:43:32.280Z"}