{"success":true,"data":{"block":{"id":"hero-image-slider","name":"Image Slider Hero","title":"Hero Image Slider","category":"Hero","categorySlug":"hero","description":"An immersive hero that layers headline content over a rotating image slider. Ideal for storytelling or product showcases where multiple visuals should share the spotlight.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290208/ofa2sbs39c8dqu99vwvuxeub7m5w/cleanshot-2026-02-18-at-01-20-25.png","mobile":"https://cdn.ing/assets/i/r/290207/lek44x66u4mitdn320c2y2r7r3ex/cleanshot-2026-02-18-at-01-20-46.png"},"componentPath":"blocks/hero/hero-image-slider.tsx","code":"import { HeroImageSlider } from \"@opensite/ui/blocks/hero/hero-image-slider\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\nimport { demoFormEngineApi } from \"@/lib/form-demo-data\";\nimport type { FormFieldConfig } from \"@opensite/ui\";\n\nconst formFields: FormFieldConfig[] = [\n  {\n    name: \"first_name\",\n    type: \"text\",\n    label: \"First Name\",\n    placeholder: \"First name\",\n    required: true,\n    columnSpan: 12,\n  },\n  {\n    name: \"last_name\",\n    type: \"text\",\n    label: \"Last Name\",\n    placeholder: \"Last name\",\n    required: true,\n    columnSpan: 12,\n  },\n  {\n    name: \"email\",\n    type: \"email\",\n    label: \"Email Address\",\n    placeholder: \"your@email.com\",\n    required: true,\n    columnSpan: 12,\n  },\n];\n\nexport default function Demo() {\n  return (\n    <HeroImageSlider\n      heading=\"Explore our collection\"\n      description=\"Browse through our carefully curated selection of products, each one designed to enhance your experience.\"\n      images={[\n        { src: \"https://toastability-production.s3.amazonaws.com/t4cidbsfz3z468bn45yqdrkbx7ou\", alt: \"Slide 1\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/gq3c9qalkiomu0rzdzxymkdaazdu\", alt: \"Slide 2\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/9ujya2tfhxja7y5s9wb7d2u8crhd\", alt: \"Slide 3\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/hotlo54tsvl2k3eht9gg0460l9zw\", alt: \"Slide 4\" },\n      ]}\n      actions={[\n        {\n          label: \"Shop Now\",\n          href: \"#\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/shopping-bag\" size={16} />,\n        },\n      ]}\n      formHeading=\"Join the list\"\n      buttonText=\"Get Updates\"\n      formEngineSetup={{\n        api: demoFormEngineApi,\n        fields: formFields,\n        successMessage: \"Thanks for subscribing! We'll keep you updated.\",\n      }}\n      background=\"white\"\n      pattern=\"gridFadeTop\"\n      patternOpacity={0.9}\n    />\n  );\n}","propsSchema":{"eyebrow":{"type":"object","description":"Eyebrow label above the heading","typeLabel":"React.ReactNode","required":false},"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":true,"maxLength":40},"description":{"type":"object","description":"Supporting description text","typeLabel":"React.ReactNode","required":false,"maxLength":130},"actions":{"type":"array","description":"Action button configurations","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 actions array)","typeLabel":"React.ReactNode","required":false},"contentSlot":{"type":"object","description":"Custom content slot for the hero copy area","typeLabel":"React.ReactNode","required":false},"images":{"type":"array","description":"Image slider items","items":{"type":"object","description":"","fields":{"src":{"type":"string","description":"Image source URL","required":false},"alt":{"type":"string","description":"Alt text for accessibility","required":true},"className":{"type":"string","description":"Additional CSS classes for the image","required":false},"optixFlowConfig":{"type":"object","description":"Optional per-image OptixFlow 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}},"typeLabel":"ImageSliderImage"},"typeLabel":"ImageSliderImage[]","required":true,"minItems":3,"maxItems":6,"mediaHints":{"path":"images[]","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":true,"note":"Slider images. Use varied, high-quality photos. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"autoplay":{"type":"boolean","description":"Enable autoplay rotation","required":false},"autoplayIntervalMs":{"type":"number","description":"Autoplay interval in milliseconds","required":false},"direction":{"type":"string","description":"Slide direction for transitions","typeLabel":"\"up\" | \"down\"","required":false},"overlay":{"type":"boolean","description":"Enable the overlay gradient","required":false},"overlaySlot":{"type":"object","description":"Custom overlay slot (overrides default overlay)","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},"containerClassName":{"type":"string","description":"Additional CSS classes for the container","required":false},"pattern":{"type":"object","description":"Background pattern","fields":{},"typeLabel":"PatternName","required":false},"patternOpacity":{"type":"number","description":"Pattern opacity (0-1)","required":false},"className":{"type":"string","description":"Additional CSS classes for the section wrapper","required":false},"sliderClassName":{"type":"string","description":"Additional CSS classes for the slider wrapper","required":false},"contentClassName":{"type":"string","description":"Additional CSS classes for the hero content wrapper","required":false},"eyebrowClassName":{"type":"string","description":"Additional CSS classes for the eyebrow","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 element","required":false},"overlayClassName":{"type":"string","description":"Additional CSS classes for the overlay layer","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},"formHeading":{"type":"object","description":"Form heading text","typeLabel":"React.ReactNode","required":false},"buttonText":{"type":"string","description":"Submit button text","required":false},"buttonIcon":{"type":"object","description":"Icon to display in submit button","typeLabel":"React.ReactNode","required":false},"formEngineSetup":{"type":"object","description":"Full form engine setup and props","typeLabel":"FormEngineProps","required":false},"cardClassName":{"type":"string","description":"Additional CSS classes for the form card","required":false},"cardContentClassName":{"type":"string","description":"Additional CSS classes for the card content","required":false},"formHeadingClassName":{"type":"string","description":"Additional CSS classes for the form heading","required":false},"privacyNotice":{"type":"object","description":"Privacy notice text below the form","typeLabel":"React.ReactNode","required":false},"privacyNoticeClassName":{"type":"string","description":"Additional CSS classes for the privacy notice","required":false},"gridClassName":{"type":"string","description":"Additional CSS classes for the grid layout","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/287635/1tmeh86afyxszfz7hbmvcc0oct8w/logo-dark.png","alt":"Brand Logo"},"heading":"Explore our collection","description":"Browse through our carefully curated selection.","images":[{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Slide 1"},{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Slide 2"},{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Slide 3"},{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Slide 4"}]},"dependencies":["@opensite/ui"],"tags":["hero","slider","carousel","images","background","overlay","cta","storytelling","visual","rotating"],"performance":{},"importantUsageNotes":"Supply at least 3 images for the slider. Do not exceed 40 characters for 'heading'. Do not exceed 130 characters for 'description'.  All media src values must be absolute URLs to real assets; relative paths and placeholder media variables are not allowed.","usageRequirements":{"requiredProps":["heading","images"],"propConstraints":{"heading":{"required":true,"maxLength":40},"description":{"maxLength":130},"images":{"required":true,"minItems":3,"maxItems":6}},"mediaSlots":{"images[]":{"path":"images[]","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"large","required":true,"note":"Slider images. Use varied, high-quality photos. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"requiresSiteCapabilities":["media_library"]}}},"timestamp":"2026-06-27T20:07:29.250Z"}