{"success":true,"data":{"block":{"id":"hero-dashed-border-features","name":"Dashed Border Features Hero","title":"Hero Dashed Border Features","category":"Hero","categorySlug":"hero","description":"A hero with dashed border decorations and feature highlights. Unique visual style that draws attention to key features.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/308451/n2zbjv5br0tdg1ggt3jj6sfd9y20/hero-dashed-border-features-desktop.jpg","mobile":"https://cdn.ing/assets/i/r/308452/7yn81hwai8ndl4tj8c9i08lbvucb/hero-dashed-border-features-mobile.jpg"},"componentPath":"blocks/hero/hero-dashed-border-features.tsx","code":"import { HeroDashedBorderFeatures } from \"@opensite/ui/blocks/hero/hero-dashed-border-features\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <HeroDashedBorderFeatures\n      logo={{\n        src: \"https://cdn.ing/assets/i/r/287635/1tmeh86afyxszfz7hbmvcc0oct8w/logo-dark.png\",\n        alt: \"Brand Logo\",\n      }}\n      heading=\"Features that make a difference\"\n      description=\"Discover the powerful capabilities that set us apart. Every feature designed with your success in mind.\"\n      badgeText=\"New Features\"\n      announcementHref=\"#\"\n      announcementText=\"Latest innovations\"\n      features={[\n        {\n          icon: <DynamicIcon name=\"lucide/zap\" size={24} />,\n          title: \"Lightning Fast\",\n          description: \"Optimized for speed and performance\",\n          href: \"#\",\n        },\n        {\n          icon: <DynamicIcon name=\"lucide/shield\" size={24} />,\n          title: \"Secure by Default\",\n          description: \"Enterprise-grade security built-in\",\n          href: \"#\",\n        },\n        {\n          icon: <DynamicIcon name=\"lucide/sparkles\" size={24} />,\n          title: \"AI-Powered\",\n          description: \"Smart automation that learns\",\n          href: \"#\",\n        },\n      ]}\n      actions={[\n        {\n          label: \"Explore Features\",\n          href: \"#\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n        },\n        {\n          label: \"Contact Sales\",\n          href: \"#\",\n          variant: \"outline\",\n        },\n      ]}\n      background=\"white\"\n      pattern=\"diagonalCrossFadeCenter\"\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":"Brand logo rendered via BrandLogo component above the dashed border content. 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},"badgeText":{"type":"object","description":"Badge text content","typeLabel":"React.ReactNode","required":false},"announcementText":{"type":"object","description":"Announcement text next to badge","typeLabel":"React.ReactNode","required":false},"announcementHref":{"type":"string","description":"Announcement link href","required":false},"announcementSlot":{"type":"object","description":"Custom slot for announcement (overrides badge and announcement props)","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":130},"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},"features":{"type":"array","description":"Array of feature items","items":{"type":"object","description":"","typeLabel":"FeatureItem & { iconName?: string; }"},"typeLabel":"FeatureItem & { iconName?: string; }[]","required":true,"count":3,"minItems":2,"maxItems":4},"featuresSlot":{"type":"object","description":"Custom slot for features (overrides features 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},"featuresClassName":{"type":"string","description":"Additional CSS classes for the features container","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false},"logo.src":{"type":"object","description":""}},"exampleProps":{"logo":{"src":"https://cdn.ing/assets/i/r/287634/e4cmvu8nbwoqy2qer90t4gpap0ed/logo-light.png","alt":"Brand Logo"},"heading":"Features that make a difference","description":"Discover the powerful capabilities that set us apart.","badgeText":"New Features","announcementText":"Latest innovations","announcementHref":"#","features":[{"iconName":"lucide/zap","title":"Lightning Fast","description":"Optimized for speed","href":"#"},{"iconName":"lucide/shield","title":"Secure by Default","description":"Enterprise-grade security","href":"#"},{"iconName":"lucide/sparkles","title":"AI-Powered","description":"Smart automation","href":"#"}],"actions":[{"label":"Explore Features","href":"#","variant":"default"},{"label":"Contact Sales","href":"#","variant":"outline"}]},"dependencies":["@opensite/ui"],"tags":["hero","dashed","border","features","unique","decorative","highlights"],"performance":{},"importantUsageNotes":"The optional 'logo' prop accepts a LogoConfig object and renders via the BrandLogo component — it must be a brand logo image, NEVER a photo or hero image. Supply exactly 3 'features' objects. Do not exceed 50 characters for 'heading'. Do not exceed 130 characters for 'description'. If you supply multiple 'actions', use 'default' for the first and 'outline' for the second.","usageRequirements":{"requiredProps":["heading","features"],"propConstraints":{"heading":{"required":true,"maxLength":50},"description":{"maxLength":130},"features":{"required":true,"count":3,"minItems":2,"maxItems":4},"actions":{"maxItems":2,"pinnedValues":{"0.variant":"default","1.variant":"outline"}},"logo.src":{"note":"LOGO MEDIA ONLY. Must be a brand logo image (SVG, PNG, WebP). Never use a photo, hero image, or video asset."}},"mediaSlots":{"logo.src":{"path":"logo.src","roles":["logo"],"disallowedRoles":["favicon","video-thumbnail"],"minPixelClass":"small","required":false,"note":"Brand logo rendered via BrandLogo component above the dashed border content. LOGO IMAGE ONLY. Do not use photos, favicons, or video assets."}},"notes":["The logo prop is optional. When provided, the BrandLogo component renders it above the announcement badge with responsive sizing."]}}},"timestamp":"2026-06-27T19:59:07.466Z"}