{"success":true,"data":{"block":{"id":"hero-pattern-logo-tech-stack","name":"Pattern Logo Tech Stack Hero","title":"Hero Pattern Logo Tech Stack","category":"Hero","categorySlug":"hero","description":"A hero section with a background pattern, logo, headline, and a visual display of technology stack icons. Perfect for developer tools and technical products.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290226/voswkh09xl0fsefnpavwbpwd6rl5/cleanshot-2026-02-18-at-02-33-19.png","mobile":"https://cdn.ing/assets/i/r/290225/tde0mxqqulf7d8i8wjqvxblrycwx/cleanshot-2026-02-18-at-02-33-31.png"},"componentPath":"blocks/hero/hero-pattern-logo-tech-stack.tsx","code":"import {\n  brandLogoPlaceholders,\n  imagePlaceholders,\n  logoPlaceholders,\n} from \"@/lib/media\";\nimport { HeroPatternLogoTechStack } from \"@opensite/ui/blocks/hero/hero-pattern-logo-tech-stack\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <HeroPatternLogoTechStack\n      logo={{ src: logoPlaceholders.darkHorizontalLogo, alt: \"Company Logo\" }}\n      heading=\"Built with the best technologies\"\n      description=\"Powered by cutting-edge tools and frameworks that developers love. Fast, reliable, and scalable.\"\n      techLogos={[\n        { src: brandLogoPlaceholders.black[0], alt: \"React\" },\n        { src: brandLogoPlaceholders.black[1], alt: \"TypeScript\" },\n        { src: brandLogoPlaceholders.black[2], alt: \"Node.js\" },\n        { src: brandLogoPlaceholders.black[3], alt: \"PostgreSQL\" },\n        { src: brandLogoPlaceholders.black[4], alt: \"Docker\" },\n        { src: brandLogoPlaceholders.black[5], alt: \"AWS\" },\n      ]}\n      actions={[\n        {\n          label: \"View Docs\",\n          href: \"/docs\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n        },\n        {\n          label: \"GitHub\",\n          href: \"https://github.com\",\n          variant: \"outline\",\n          icon: <DynamicIcon name=\"lucide/github\" size={16} />,\n        },\n      ]}\n      pattern=\"grid1\"\n      background=\"white\"\n      patternOpacity={0.9}\n    />\n  );\n}","propsSchema":{"logo":{"type":"object","description":"Logo configuration","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","required":false},"logoSlot":{"type":"object","description":"Custom slot for logo (overrides logo prop)","typeLabel":"React.ReactNode","required":false},"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":false},"highlightedWord":{"type":"string","description":"Highlighted word in heading","required":false},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false},"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},"actionsSlot":{"type":"object","description":"Custom slot for rendering actions (overrides actions array)","typeLabel":"React.ReactNode","required":false},"techStackLabel":{"type":"object","description":"Tech stack section label","typeLabel":"React.ReactNode","required":false},"techLogos":{"type":"array","description":"Array of tech stack logos","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},"techLogosSlot":{"type":"object","description":"Custom slot for tech logos (overrides techLogos 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},"techLogosClassName":{"type":"string","description":"Additional CSS classes for the tech 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},"sectionId":{"type":"string","description":"Optional Section ID","required":false}},"defaultProps":{},"dependencies":["@opensite/ui"],"tags":["hero","pattern","logo","tech","stack","developer","tools","technical","icons"],"performance":{},"importantUsageNotes":"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. Follow the example props closely for this block. AND VERY IMPORTANT: only use this block if you have 3-6 valid logo img urls since the focal point of this block is to showcase a collection of 'techLogos'."}},"timestamp":"2026-05-13T10:40:40.425Z"}