{"success":true,"data":{"block":{"id":"hero-platform-features-grid","name":"Platform Features Grid Hero","title":"Hero Platform Features Grid","category":"Hero","categorySlug":"hero","description":"A hero section showcasing platform features in a grid layout with icons and descriptions. Includes headline and CTA. Perfect for feature-rich products.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/308453/axhuo121s22zb4kuj8gvm7stua0c/hero-platform-features-grid-desktop.jpg","mobile":"https://cdn.ing/assets/i/r/308454/sdtzm3tjsw2djmwh0rr0ttv99tqr/hero-platform-features-grid-mobile.jpg"},"componentPath":"blocks/hero/hero-platform-features-grid.tsx","code":"import { HeroPlatformFeaturesGrid } from \"@opensite/ui/blocks/hero/hero-platform-features-grid\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <HeroPlatformFeaturesGrid\n      logo={{\n        src: \"https://cdn.ing/assets/i/r/288965/aw0n8ithqntxtfweqrlmseqlcak7/ui-placeholder-logo-black-2.png\",\n        alt: \"Company Logo\",\n      }}\n      subtitle=\"Complete Platform\"\n      heading=\"A complete platform for modern teams\"\n      description=\"All-in-one solution that combines communication, collaboration, and project management tools in a single platform.\"\n      action={{\n        label: \"Explore Features\",\n        href: \"#\",\n        variant: \"default\",\n        iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n      }}\n      features={[\n        {\n          iconName: \"lucide/message-square\",\n          title: \"Team Chat\",\n          description: \"Real-time messaging\",\n          href: \"#\",\n        },\n        {\n          iconName: \"lucide/video\",\n          title: \"Video Calls\",\n          description: \"HD video meetings\",\n          href: \"#\",\n        },\n        {\n          iconName: \"lucide/file-text\",\n          title: \"Documents\",\n          description: \"Collaborative editing\",\n          href: \"#\",\n        },\n        {\n          iconName: \"lucide/calendar\",\n          title: \"Calendar\",\n          description: \"Schedule meetings\",\n          href: \"#\",\n        },\n      ]}\n      background=\"gray\"\n      pattern=\"dashedGridFadeTop\"\n      patternOpacity={1}\n    />\n  );\n}","propsSchema":{"logo":{"type":"object","description":"Brand logo configuration — renders above the announcement badge.\nLOGO MEDIA ONLY. Do not use photos, hero images, or video assets.","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,"mediaHints":{"path":"logo.src","roles":["logo"],"disallowedRoles":["favicon","video-thumbnail"],"minPixelClass":"small","required":false,"note":"Optional brand logo above heading. LOGO IMAGE ONLY. Do not use photos, favicons, or video assets."}},"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},"subtitle":{"type":"object","description":"Subtitle/label text above heading","typeLabel":"React.ReactNode","required":false},"description":{"type":"object","description":"Supporting description content","typeLabel":"React.ReactNode","required":false,"maxLength":140},"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":true,"maxLength":50},"action":{"type":"object","description":"Action configuration for CTA button","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","required":false},"actionSlot":{"type":"object","description":"Custom slot for action (overrides action prop)","typeLabel":"React.ReactNode","required":false},"features":{"type":"array","description":"Array of feature items for the grid","items":{"type":"object","description":"","typeLabel":"FeatureItem & { iconName?: string; }"},"typeLabel":"FeatureItem & { iconName?: string; }[]","required":true,"count":4,"minItems":3,"maxItems":6},"featuresSlot":{"type":"object","description":"Custom slot for features (overrides features array)","typeLabel":"React.ReactNode","required":false},"background":{"type":"string","description":"","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},"headerClassName":{"type":"string","description":"Additional CSS classes for the header area","required":false},"headingClassName":{"type":"string","description":"Additional CSS classes for the heading","required":false},"featuresClassName":{"type":"string","description":"Additional CSS classes for the features grid","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}},"exampleProps":{"logo":{"src":"https://cdn.ing/assets/i/r/287634/e4cmvu8nbwoqy2qer90t4gpap0ed/logo-light.png","alt":"Brand Logo"},"heading":"A complete platform for modern teams","description":"All-in-one solution for communication and collaboration.","action":{"label":"Explore Features","href":"#","variant":"default"},"features":[{"iconName":"lucide/message-square","title":"Team Chat","description":"Real-time messaging","href":"#"},{"iconName":"lucide/video","title":"Video Calls","description":"HD video meetings","href":"#"},{"iconName":"lucide/file-text","title":"Documents","description":"Collaborative editing","href":"#"},{"iconName":"lucide/calendar","title":"Calendar","description":"Schedule meetings","href":"#"}]},"dependencies":["@opensite/ui"],"tags":["hero","platform","features","grid","icons","product","showcase"],"performance":{},"importantUsageNotes":"Supply exactly 4 'features' objects. Do not exceed 50 characters for 'heading'. Do not exceed 140 characters for 'description'. Each feature should have 'iconName', 'title', and 'description'. Follow the example props closely.","usageRequirements":{"requiredProps":["heading","features"],"propConstraints":{"heading":{"required":true,"maxLength":50},"description":{"maxLength":140},"features":{"required":true,"count":4,"minItems":3,"maxItems":6}},"mediaSlots":{"logo.src":{"path":"logo.src","roles":["logo"],"disallowedRoles":["favicon","video-thumbnail"],"minPixelClass":"small","required":false,"note":"Optional brand logo above heading. LOGO IMAGE ONLY. Do not use photos, favicons, or video assets."}}}}},"timestamp":"2026-06-27T20:04:56.625Z"}