{"success":true,"data":{"block":{"id":"stats-impact-grid","name":"Stats Impact Grid","title":"Stats Impact Grid","category":"Stats","categorySlug":"stats","description":"A comprehensive stats section featuring a grid of impact metrics with icons, an industry comparison bar chart, and a call-to-action. Each stat card displays an icon, large value with prefix/suffix, label, and description. Includes a visual comparison between industry average and platform performance. Ideal for showcasing ROI, business impact, or platform benefits with social proof.","thumbnail":{"desktop":"https://cdn.ing/assets/i/r/288940/71bf2g13yafem6q5lp74mo32vswj/stats-impact-grid-desktop.jpg","mobile":"https://cdn.ing/assets/i/r/288941/rqu3gscky1darnaew4rd2hknwflz/stats-impact-grid-mobile.jpg"},"componentPath":"blocks/stats/stats-impact-grid.tsx","code":"import { StatsImpactGrid } from \"@opensite/ui/blocks/stats/stats-impact-grid\";\nimport { DynamicIcon } from \"@opensite/ui/components/dynamic-icon\";\n\nexport default function Demo() {\n  return (\n    <StatsImpactGrid\n      badge=\"Proof in the Numbers\"\n      heading=\"Impact You Can Measure\"\n      description=\"See how teams translate insight into meaningful outcomes across growth, efficiency, and retention.\"\n      stats={[\n        {\n          id: \"growth\",\n          value: \"312\",\n          suffix: \"%\",\n          label: \"Revenue Growth\",\n          description: \"Average year-over-year lift after launch.\",\n          icon: \"lucide/trending-up\",\n        },\n        {\n          id: \"velocity\",\n          value: \"4.6\",\n          suffix: \"x\",\n          label: \"Delivery Speed\",\n          description: \"Faster time-to-value compared to baseline.\",\n          icon: \"lucide/rocket\",\n          iconColor: \"text-primary\",\n        },\n        {\n          id: \"retention\",\n          prefix: \"+\",\n          value: \"29\",\n          suffix: \"%\",\n          label: \"Customer Retention\",\n          description: \"Retention gains within the first 90 days.\",\n          icon: \"lucide/user-check\",\n          iconColor: \"text-primary\",\n        },\n      ]}\n      comparisonHeading=\"Before vs. After\"\n      comparisonDescription=\"Track the measurable shift between your baseline and optimized performance.\"\n      baselineLabel=\"Baseline\"\n      baselineValue=\"24%\"\n      baselinePercent={24}\n      targetLabel=\"Optimized\"\n      targetValue=\"89%\"\n      targetPercent={89}\n      ctaHeading=\"Ready to build your own impact story?\"\n      actions={[\n        {\n          label: \"Start the audit\",\n          href: \"/audit\",\n          variant: \"default\",\n          iconAfter: <DynamicIcon name=\"lucide/arrow-right\" size={16} />,\n        },\n        {\n          label: \"View case studies\",\n          href: \"/case-studies\",\n          variant: \"outline\",\n        },\n      ]}\n      background=\"white\"\n      pattern=\"gridFadeTop\"\n      patternOpacity={1}\n    />\n  );\n}","propsSchema":{"badge":{"type":"object","description":"Badge content above the heading","typeLabel":"React.ReactNode","required":false},"badgeSlot":{"type":"object","description":"Custom slot for badge (overrides badge prop)","typeLabel":"React.ReactNode","required":false},"heading":{"type":"object","description":"Main heading content","typeLabel":"React.ReactNode","required":false},"description":{"type":"object","description":"Description content below the heading","typeLabel":"React.ReactNode","required":false},"stats":{"type":"array","description":"Array of impact stats to display in the grid","items":{"type":"object","description":"","fields":{"id":{"type":"string","description":"Unique identifier for the stat","required":true},"value":{"type":"object","description":"The stat value (e.g., \"437\", \"2.4\", \"89\")","typeLabel":"React.ReactNode","required":true},"prefix":{"type":"object","description":"Prefix for the value (e.g., \"$\", \"€\", \"£\")","typeLabel":"React.ReactNode","required":false},"suffix":{"type":"object","description":"Suffix for the value (e.g., \"%\", \"B+\", \"x\", \"K\")","typeLabel":"React.ReactNode","required":false},"label":{"type":"object","description":"The label for the stat","typeLabel":"React.ReactNode","required":true},"description":{"type":"object","description":"Description or context for the stat","typeLabel":"React.ReactNode","required":false},"icon":{"type":"string","description":"Icon name in format: prefix/name (e.g., \"lucide/line-chart\")","required":false},"iconSlot":{"type":"object","description":"Custom slot for icon (overrides icon prop)","typeLabel":"React.ReactNode","required":false},"iconColor":{"type":"string","description":"Icon color class (e.g., \"text-primary\", \"text-emerald-500\")","required":false},"className":{"type":"string","description":"Additional CSS classes for the stat card","required":false}},"typeLabel":"ImpactStat"},"typeLabel":"ImpactStat[]","required":true,"minItems":2,"maxItems":6},"statsSlot":{"type":"object","description":"Custom slot for stats grid (overrides stats array)","typeLabel":"React.ReactNode","required":false},"comparisonHeading":{"type":"object","description":"Comparison section heading","typeLabel":"React.ReactNode","required":false},"comparisonDescription":{"type":"object","description":"Comparison section description","typeLabel":"React.ReactNode","required":false},"baselineValue":{"type":"object","description":"Baseline comparison value (displayed as the first/lower comparison point)","typeLabel":"React.ReactNode","required":false},"targetValue":{"type":"object","description":"Target comparison value (displayed as the second/higher comparison point)","typeLabel":"React.ReactNode","required":false},"baselineLabel":{"type":"object","description":"Label for the baseline comparison bar","typeLabel":"React.ReactNode","required":false},"targetLabel":{"type":"object","description":"Label for the target comparison bar","typeLabel":"React.ReactNode","required":false},"baselinePercent":{"type":"number","description":"Percentage width for the baseline progress bar (0-100)","required":false},"targetPercent":{"type":"number","description":"Percentage width for the target progress bar (0-100)","required":false},"comparisonSlot":{"type":"object","description":"Custom slot for comparison section (overrides comparison props)","typeLabel":"React.ReactNode","required":false},"ctaHeading":{"type":"object","description":"CTA section heading","typeLabel":"React.ReactNode","required":false},"actions":{"type":"array","description":"Array of action buttons for the CTA section","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},"ctaSlot":{"type":"object","description":"Custom slot for CTA section (overrides ctaHeading and actions)","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":"Background pattern","fields":{},"typeLabel":"PatternName","required":false},"patternOpacity":{"type":"number","description":"Pattern opacity (0-1)","required":false},"patternClassName":{"type":"string","description":"Additional CSS classes for the pattern","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","required":false},"badgeClassName":{"type":"string","description":"Additional CSS classes for the badge","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},"statsGridClassName":{"type":"string","description":"Additional CSS classes for the stats grid","required":false},"statCardClassName":{"type":"string","description":"Additional CSS classes for stat cards","required":false},"comparisonClassName":{"type":"string","description":"Additional CSS classes for the comparison section","required":false},"ctaClassName":{"type":"string","description":"Additional CSS classes for the CTA section","required":false},"sectionId":{"type":"string","description":"Optional Section ID","required":false},"stats[].id":{"type":"object","description":"","required":true},"stats[].value":{"type":"object","description":"","required":true},"stats[].label":{"type":"object","description":"","required":true},"actions[0].variant":{"type":"object","description":"","pinnedValues":{"variant":"default"}},"actions[1].variant":{"type":"object","description":"","pinnedValues":{"variant":"outline"}}},"exampleProps":{"badge":"Proof in the Numbers","heading":"Impact You Can Measure","description":"See how teams translate insight into meaningful outcomes.","stats":[{"id":"growth","value":"312","suffix":"%","label":"Revenue Growth","description":"Average year-over-year lift after launch.","icon":"lucide/trending-up"},{"id":"velocity","value":"4.6","suffix":"x","label":"Delivery Speed","description":"Faster time-to-value compared to baseline.","icon":"lucide/rocket","iconColor":"text-primary"},{"id":"retention","prefix":"+","value":"29","suffix":"%","label":"Customer Retention","description":"Retention gains within the first 90 days.","icon":"lucide/user-check","iconColor":"text-primary"}],"comparisonHeading":"Before vs. After","comparisonDescription":"Track the measurable shift between your baseline and optimized performance.","baselineLabel":"Baseline","baselineValue":"24%","baselinePercent":24,"targetLabel":"Optimized","targetValue":"89%","targetPercent":89,"ctaHeading":"Ready to build your own impact story?","actions":[{"label":"Start the audit","href":"/audit","variant":"default"},{"label":"View case studies","href":"/case-studies","variant":"outline"}]},"dependencies":["@opensite/ui"],"tags":["stats","impact","roi","comparison","metrics","icons","cards","cta","benefits"],"performance":{},"importantUsageNotes":"Stat values and labels must come from real, source-backed data. Do not fabricate metrics. Each stat requires an 'id', 'value', and 'label'. The 'prefix' and 'suffix' props appear adjacent to the value (e.g. prefix='$', suffix='%'). The comparison section renders progress bars — 'baselinePercent' and 'targetPercent' are 0–100 integers representing bar widths, NOT the displayed values. Provide between 2 and 6 stats; 3 recommended for the 3-column grid. Icon names use 'prefix/name' format.","usageRequirements":{"requiredProps":["stats"],"propConstraints":{"stats":{"required":true,"minItems":2,"maxItems":6,"note":"3 items recommended for the 3-column grid."},"stats[].id":{"required":true,"note":"Unique string identifier."},"stats[].value":{"required":true,"note":"Source-backed numeric string."},"stats[].label":{"required":true,"note":"Short metric label."},"baselinePercent":{"note":"Integer 0–100 for progress bar width. Not the displayed value."},"targetPercent":{"note":"Integer 0–100 for progress bar width. Not the displayed value."},"actions[0].variant":{"pinnedValues":{"variant":"default"}},"actions[1].variant":{"pinnedValues":{"variant":"outline"}}},"mediaSlots":{},"requiresSiteCapabilities":["stats_or_metrics"]}}},"timestamp":"2026-06-27T19:59:07.271Z"}