{"success":true,"data":{"block":{"id":"navbar-image-preview","name":"Navbar Image Preview","title":"NavBar Image Preview","category":"Navbar","categorySlug":"navbar","description":"A fixed navigation bar with image preview functionality in dropdown menus. The navigation bar changes background on scroll for better visibility. Desktop dropdowns display a large image preview that dynamically changes when hovering over different menu items, creating an engaging visual experience. Mobile view uses a full-screen dark overlay with categorized link columns and social links at the bottom. Ideal for creative agencies, portfolios, e-commerce sites, and brands that want to showcase visual content directly in their navigation.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290164/b9mreqd4lioiqekpb7alvqs680my/navbar-image-preview-desktop.png","mobile":"https://cdn.ing/assets/i/r/290165/ihgllx4727whi8oxwdrfjw23l73a/navbar-image-preview-mobile.png"},"componentPath":"blocks/navbars/navbar-image-preview.tsx","code":"import { NavbarImagePreview } from \"@opensite/ui/blocks/navbars/navbar-image-preview\";\nimport { brandLogoPlaceholders, imagePlaceholders } from \"@/lib/media\";\nimport CarouselAnimatedSections from \"@/blocks/carousel/carousel-animated-sections\";\nimport FeatureShowcase from \"@/blocks/features/feature-showcase\";\nimport FaqSplitHelp from \"@/blocks/faq/faq-split-help\";\n\nexport default function Demo() {\n  return (\n    <>\n      <NavbarImagePreview\n      logo={{\n        url: \"/\",\n        src: brandLogoPlaceholders.black[0],\n        title: \"Design Studio\",\n        alt: \"Design Studio Logo\",\n      }}\n      navigation={[\n        {\n          title: \"Services\",\n          links: [\n            {\n              label: \"Brand Identity\",\n              description: \"Complete brand design packages\",\n              url: \"#\",\n              image: imagePlaceholders[20],\n            },\n            {\n              label: \"Web Design\",\n              description: \"Modern and responsive websites\",\n              url: \"#\",\n              image: imagePlaceholders[21],\n            },\n            {\n              label: \"UI/UX Design\",\n              description: \"User-centered design solutions\",\n              url: \"#\",\n              image: imagePlaceholders[22],\n            },\n            {\n              label: \"Motion Graphics\",\n              description: \"Engaging animated content\",\n              url: \"#\",\n              image: imagePlaceholders[23],\n            },\n          ],\n        },\n        {\n          title: \"Portfolio\",\n          url: \"#\",\n        },\n        {\n          title: \"About\",\n          url: \"#\",\n        },\n        {\n          title: \"Contact\",\n          url: \"#\",\n        },\n      ]}\n      authActions={[\n        {\n          label: \"Get a Quote\",\n          variant: \"default\",\n          href: \"#\",\n          asButton: true,\n        },\n      ]}\n      />\n\n      <CarouselAnimatedSections />\n      <FeatureShowcase />\n      <FaqSplitHelp />\n    </>\n  );\n}","propsSchema":{"logo":{"type":"object","description":"Logo configuration","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},"navigation":{"type":"array","description":"Navigation menu items","items":{"type":"object","description":"","fields":{"title":{"type":"string","description":"","required":true},"url":{"type":"string","description":"","required":false},"tabs":{"type":"array","description":"","items":{"type":"object","description":"","fields":{"id":{"type":"string","description":"","required":true},"title":{"type":"string","description":"","required":true},"icon":{"type":"object","description":"","fields":{},"typeLabel":"DynamicIconName","required":false},"links":{"type":"array","description":"","items":{"type":"object","description":"","fields":{"title":{"type":"string","description":"","required":true},"description":{"type":"string","description":"","required":false},"url":{"type":"string","description":"","required":true},"icon":{"type":"object","description":"","fields":{},"typeLabel":"DynamicIconName","required":false}},"typeLabel":"{ title: string; description?: string; url: string; icon?: DynamicIconName; }"},"typeLabel":"{ title: string; description?: string; url: string; icon?: DynamicIconName; }[]","required":true},"featured":{"type":"object","description":"","fields":{"title":{"type":"string","description":"","required":true},"description":{"type":"string","description":"","required":true},"url":{"type":"string","description":"","required":true},"image":{"type":"string","description":"","required":true}},"typeLabel":"{ title: string; description: string; url: string; image: string; }","required":false}},"typeLabel":"TabItem"},"typeLabel":"TabItem[]","required":false}},"typeLabel":"MenuItem"},"typeLabel":"MenuItem[]","required":false},"authActions":{"type":"array","description":"Authentication action 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}},"defaultProps":{},"dependencies":["@opensite/ui"],"tags":["navbar","navigation","image-preview","hover-preview","visual","creative","portfolio","e-commerce","fixed","scroll-aware"],"performance":{},"importantUsageNotes":"Use this navbar when the site is a creative agency, design studio, or visual-heavy brand that needs dropdown menus where each sub-link shows a real image preview on hover — DO NOT USE this block if you do not have a real image URL for every link item in every dropdown. The demo uses 4 top-level 'navigation' items: 'Services' with 4 sub-links each requiring a real 'image' URL, and 3 flat href-only items (Portfolio, About, Contact) — every item in a 'links' array must have a real, accessible 'image' URL from the media library. Only set 'logo.src' if a real brand logo exists in the media library; otherwise omit 'logo.src' and rely on 'logo.title' as plain text. The 'authActions' prop drives the right-side buttons — if you supply multiple entries, use a variant of 'default' for the first and 'outline' for the second. Only use real internal route hrefs and important external URLs — do not invent or guess routes. The mobile menu is built into this block — do not strip it or override its behavior; preserve the demo's mobile structure. Follow the example props closely for this block — the demo encodes the canonical layout, and deviating from it will produce broken or unusable navigation."}},"timestamp":"2026-05-13T10:42:27.154Z"}