{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "vns-report",
  "title": "VNS Report",
  "description": "Single-page VNS report preset built from the patient results component family.",
  "registryDependencies": [
    "@blocks/diagnostic-interpretation-columns",
    "@blocks/diagnostic-metric-donut-card",
    "@blocks/diagnostic-metric-range-card",
    "@blocks/diagnostic-metric-split-card",
    "@blocks/diagnostic-metric-stat-card",
    "@blocks/diagnostic-report-intro",
    "@blocks/diagnostic-report-page-shell",
    "@blocks/patient-results-presets",
    "@blocks/segment-muscle-analysis",
    "@circle-ui/utils"
  ],
  "files": [
    {
      "path": "registry/berlin/blocks/patient-results/template/patient-results-report.tsx",
      "content": "// Generated from packages/ui/src/components/patient-results/template/patient-results-report.tsx\nimport * as React from \"react\";\n\nimport { cn } from \"@/registry/berlin/lib/utils\";\n\nimport { DiagnosticInterpretationColumns } from \"@/registry/berlin/blocks/diagnostic-interpretation-columns\";\nimport { DiagnosticMetricDonutCard } from \"@/registry/berlin/blocks/diagnostic-metric-donut-card\";\nimport { DiagnosticMetricRangeCard } from \"@/registry/berlin/blocks/diagnostic-metric-range-card\";\nimport { DiagnosticMetricSplitCard } from \"@/registry/berlin/blocks/diagnostic-metric-split-card\";\nimport { DiagnosticMetricStatCard } from \"@/registry/berlin/blocks/diagnostic-metric-stat-card\";\nimport { SegmentMuscleAnalysis } from \"@/registry/berlin/blocks/segment-muscle-analysis\";\nimport { getPatientResultsPreset } from \"@/registry/berlin/blocks/patient-results-presets\";\nimport type {\n  PatientResultsBlock,\n  PatientResultsBlockSpan,\n  PatientResultsReportPreset,\n} from \"@/registry/berlin/blocks/patient-results-types\";\n\nimport { DiagnosticReportIntro } from \"@/registry/berlin/blocks/diagnostic-report-intro\";\nimport { DiagnosticReportPageShell } from \"@/registry/berlin/blocks/diagnostic-report-page-shell\";\n\n// Registry source of truth for patient-results report pulls into circleOS.\nfunction spanClass(span: PatientResultsBlockSpan | undefined) {\n  if (span === \"half\") return \"md:col-span-6\";\n  if (span === \"third\") return \"md:col-span-4\";\n  return \"md:col-span-12\";\n}\n\nexport function renderPatientResultsBlock(block: PatientResultsBlock) {\n  switch (block.type) {\n    case \"diagnosticMetricRange\":\n      return <DiagnosticMetricRangeCard {...block.props} />;\n    case \"diagnosticMetricDonut\":\n      return <DiagnosticMetricDonutCard {...block.props} />;\n    case \"diagnosticMetricSplit\":\n      return <DiagnosticMetricSplitCard {...block.props} />;\n    case \"diagnosticMetricStat\":\n      return <DiagnosticMetricStatCard {...block.props} />;\n    case \"diagnosticInterpretation\":\n      return <DiagnosticInterpretationColumns {...block.props} />;\n    case \"segmentMuscleAnalysis\":\n      return <SegmentMuscleAnalysis {...block.props} />;\n    default:\n      return null;\n  }\n}\n\nexport interface PatientResultsReportProps {\n  preset: PatientResultsReportPreset;\n  dateLabel?: string;\n  className?: string;\n}\n\nexport function PatientResultsReport({\n  preset,\n  dateLabel,\n  className,\n}: PatientResultsReportProps) {\n  return (\n    <div className={cn(\"space-y-12 bg-[#faf8f5]\", className)}>\n      {preset.pages.map((page) => (\n        <DiagnosticReportPageShell\n          key={page.id}\n          dateLabel={dateLabel}\n          footer={page.footer}\n        >\n          {page.intro ? <DiagnosticReportIntro {...page.intro} /> : null}\n          <div className=\"grid gap-8 md:grid-cols-12\">\n            {page.blocks.map((block, index) => (\n              <div\n                key={`${page.id}-${block.type}-${index}`}\n                className={spanClass(block.span)}\n              >\n                {renderPatientResultsBlock(block)}\n              </div>\n            ))}\n          </div>\n        </DiagnosticReportPageShell>\n      ))}\n    </div>\n  );\n}\n\nexport function Vo2MaxReport({\n  dateLabel,\n  className,\n}: Omit<PatientResultsReportProps, \"preset\">) {\n  return (\n    <PatientResultsReport\n      preset={getPatientResultsPreset(\"vo2-max-report\")}\n      dateLabel={dateLabel}\n      className={className}\n    />\n  );\n}\n\nexport function VnsReport({\n  dateLabel,\n  className,\n}: Omit<PatientResultsReportProps, \"preset\">) {\n  return (\n    <PatientResultsReport\n      preset={getPatientResultsPreset(\"vns-report\")}\n      dateLabel={dateLabel}\n      className={className}\n    />\n  );\n}\n\nexport function BodyCompositionReport({\n  dateLabel,\n  className,\n}: Omit<PatientResultsReportProps, \"preset\">) {\n  return (\n    <PatientResultsReport\n      preset={getPatientResultsPreset(\"body-composition-report\")}\n      dateLabel={dateLabel}\n      className={className}\n    />\n  );\n}\n",
      "type": "registry:ui",
      "target": "src/components/ui/patient-results/template/patient-results-report.tsx"
    }
  ],
  "type": "registry:ui"
}