{"success":true,"data":{"block":{"id":"hero-saas-dashboard-preview","name":"SaaS Dashboard Preview Hero","title":"Hero SaaS Dashboard Preview","category":"Hero","categorySlug":"hero","description":"A hero featuring a SaaS dashboard preview with email signup. Perfect for software products showing their interface.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/290451/rb4nlzuaqaytmocazqfb41w6m50p/cleanshot-2026-02-19-at-03-49-38-2x.png","mobile":"https://cdn.ing/assets/i/r/290450/i7thwrr15st3x9d0plscxmqyar1e/cleanshot-2026-02-19-at-03-50-02-2x.png"},"componentPath":"blocks/hero/hero-saas-dashboard-preview.tsx","code":"\"use client\";\n\nimport { imagePlaceholders } from \"@/lib/media\";\nimport { HeroSaasDashboardPreview } from \"@opensite/ui/blocks/hero/hero-saas-dashboard-preview\";\nimport { demoFormConfig } from \"@/lib/form-demo-data\";\nimport type { FormFieldConfig } from \"@opensite/ui\";\n\nconst formFields: FormFieldConfig[] = [\n  {\n    name: \"email\",\n    type: \"email\",\n    placeholder: \"Enter your email\",\n    required: true,\n    columnSpan: 12,\n    className: \"w-full\",\n  },\n];\n\nexport default function Demo() {\n  return (\n    <HeroSaasDashboardPreview\n      badgeText=\"SaaS Platform\"\n      badgeIcon=\"lucide/box\"\n      heading=\"The operating system for your business\"\n      description=\"All-in-one platform to run your business efficiently. From analytics to automation, everything you need is here.\"\n      formFields={formFields}\n      formConfig={\n        {\n          ...demoFormConfig,\n          formLayout: \"button-group\",\n          buttonGroupSize: \"lg\",\n        } as any\n      }\n      buttonAction={{\n        label: \"Start Free Trial\",\n        variant: \"default\",\n      }}\n      successMessage=\"Welcome aboard! Check your email to get started.\"\n      helperText=\"No credit card required. Cancel anytime.\"\n      browserPreview={{\n        url: \"yourbrand.com/showcase\",\n        image: {\n          src: imagePlaceholders[83],\n          alt: \"Dashboard\",\n        },\n      }}\n      spacing=\"xl\"\n      background=\"dark\"\n    />\n  );\n}","propsSchema":{"badgeText":{"type":"object","description":"Badge text with icon","typeLabel":"React.ReactNode","required":false},"badgeIcon":{"type":"string","description":"Badge icon name","required":false},"badgeSlot":{"type":"object","description":"Custom slot for badge (overrides badge props)","typeLabel":"React.ReactNode","required":false},"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":false},"description":{"type":"object","description":"Description text below heading","typeLabel":"React.ReactNode","required":false},"formFields":{"type":"array","description":"Form field configuration","items":{"type":"object","description":"","typeLabel":"FormFieldConfig"},"typeLabel":"FormFieldConfig[]","required":false},"formConfig":{"type":"object","description":"Form configuration for submission","typeLabel":"PageSpeedFormConfig","required":false},"onSubmit":{"type":"object","description":"Custom submit handler","typeLabel":"(values: Record<string, any>) => void | Promise<void>","required":false},"onSuccess":{"type":"object","description":"Success callback","typeLabel":"(data: unknown) => void","required":false},"onError":{"type":"object","description":"Error callback","typeLabel":"(error: Error) => void","required":false},"successMessage":{"type":"object","description":"Success message to display","typeLabel":"React.ReactNode","required":false},"buttonAction":{"type":"object","description":"Submit button configuration","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},"helperText":{"type":"object","description":"Helper text below form","typeLabel":"React.ReactNode","required":false},"formSlot":{"type":"object","description":"Custom slot for form (overrides form props)","typeLabel":"React.ReactNode","required":false},"browserPreview":{"type":"object","description":"Browser preview configuration","fields":{"url":{"type":"string","description":"URL displayed in browser bar","required":false},"image":{"type":"object","description":"Dashboard preview image","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","required":false}},"typeLabel":"BrowserPreviewConfig","required":false},"browserPreviewSlot":{"type":"object","description":"Custom slot for browser preview (overrides browserPreview prop)","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},"descriptionClassName":{"type":"string","description":"Additional CSS classes for the description","required":false},"previewClassName":{"type":"string","description":"Additional CSS classes for the preview area","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","saas","dashboard","preview","email","signup","software","product"],"performance":{},"importantUsageNotes":"Ensure to find or create a newsletter contact category to wire up to this newsletter block. IMPORTANT: use the website's url for the prop 'browserPreview.url' - DO NOT USE AN EXAMPLE/PLACEHOLDER URL. Do not exceed 20 characters for the 'badgeText' prop. Do not exceed 40 characters for the 'heading' prop. Do not exceed 130 characters for the 'description' prop. Follow the example props closely for this block."}},"timestamp":"2026-05-13T10:42:49.740Z"}