{"success":true,"data":{"block":{"id":"hero-split-spiral-shapes","name":"Split Spiral Shapes Hero","title":"Hero Split Spiral Shapes","category":"Hero","categorySlug":"hero","description":"A split-layout hero with content on one side and decorative spiral shapes on the other. Artistic and modern design for creative businesses.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290216/7gjd6p0qulimr2q4f0qwmc1gt8p7/cleanshot-2026-02-18-at-01-50-34.png","mobile":"https://cdn.ing/assets/i/r/290215/xnytd9m7yonh4e4jd0d1lip4sqbg/cleanshot-2026-02-18-at-01-50-51.png"},"componentPath":"blocks/hero/hero-split-spiral-shapes.tsx","code":"import { HeroSplitSpiralShapes } from \"@opensite/ui/blocks/hero/hero-split-spiral-shapes\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <HeroSplitSpiralShapes\n      badgeText=\"Design Excellence\"\n      heading=\"Where creativity meets precision\"\n      description=\"Award-winning designs that blend artistic vision with technical excellence. Experience the difference of thoughtful design.\"\n      actions={[\n        {\n          label: \"View Portfolio\",\n          href: \"/portfolio\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n        },\n        {\n          label: \"Contact Us\",\n          href: \"/contact\",\n          variant: \"outline\",\n        },\n      ]}\n      images={[\n        { src: \"https://toastability-production.s3.amazonaws.com/1b0gd8ul22q799d62dvm3sgyll85\", alt: \"Image 1\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/102grjqg8aigxkj585s9x3xbxfv7\", alt: \"Image 2\" },\n        { src: \"https://toastability-production.s3.amazonaws.com/dvz0441h9fxjhh88lzqbwdoyxv52\", alt: \"Image 3\" },\n      ]}\n      background=\"dark\"\n      pattern=\"spotlightRight\"\n    />\n  );\n}","propsSchema":{"badgeText":{"type":"object","description":"Badge/label text above heading","typeLabel":"React.ReactNode","required":false},"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":true,"maxLength":50},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false,"maxLength":140},"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},"images":{"type":"array","description":"Array of images to display (expects 3 images for scattered layout)","items":{"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"},"typeLabel":"ImageItem[]","required":true,"count":3,"minItems":3,"maxItems":3,"mediaHints":{"path":"images[]","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"medium","required":true,"note":"Scattered decorative images. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"imagesSlot":{"type":"object","description":"Custom slot for rendering images (overrides images array)","typeLabel":"React.ReactNode","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},"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},"imagesClassName":{"type":"string","description":"Additional CSS classes for the images container","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"},"badgeText":"Design Excellence","heading":"Where creativity meets precision","description":"Award-winning designs that blend artistic vision with technical excellence.","images":[{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Image 1"},{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Image 2"},{"src":"https://cdn.ing/assets/i/r/308196/g6bbn73f7gxal82uu49m9prfd0u8/workplace-in-cafe.webp","alt":"Image 3"}],"actions":[{"label":"View Portfolio","href":"/portfolio","variant":"default"},{"label":"Contact Us","href":"/contact","variant":"outline"}]},"dependencies":["@opensite/ui"],"tags":["hero","split","spiral","shapes","artistic","modern","creative","design"],"performance":{},"importantUsageNotes":"Supply exactly 3 images for the scattered layout. Do not exceed 50 characters for 'heading'. Do not exceed 140 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","images"],"propConstraints":{"heading":{"required":true,"maxLength":50},"description":{"maxLength":140},"images":{"required":true,"count":3,"minItems":3,"maxItems":3},"actions":{"maxItems":2,"pinnedValues":{"0.variant":"default","1.variant":"outline"}}},"mediaSlots":{"images[]":{"path":"images[]","roles":["feature","hero"],"disallowedRoles":["logo","favicon","video-thumbnail"],"minPixelClass":"medium","required":true,"note":"Scattered decorative images. IMAGE MEDIA ONLY. Do not use logos, favicons, or video assets."}},"requiresSiteCapabilities":["media_library"]}}},"timestamp":"2026-06-27T20:14:22.705Z"}