import { AccordionBlockComponent } from "./blocks/accordion.js"; import { ActionsBlockComponent } from "./blocks/actions.js"; import { BannerBlockComponent } from "./blocks/banner.js"; import { ChartBlockComponent } from "./blocks/chart.js"; import { CodeBlockComponent } from "./blocks/code.js"; import { ColumnsBlockComponent } from "./blocks/columns.js"; import { ContextBlockComponent } from "./blocks/context.js"; import { DividerBlockComponent } from "./blocks/divider.js"; import { EmptyBlockComponent } from "./blocks/empty.js"; import { FieldsBlockComponent } from "./blocks/fields.js"; import { FormBlockComponent } from "./blocks/form.js"; import { HeaderBlockComponent } from "./blocks/header.js"; import { ImageBlockComponent } from "./blocks/image.js"; import { MeterBlockComponent } from "./blocks/meter.js"; import { SectionBlockComponent } from "./blocks/section.js"; import { StatsBlockComponent } from "./blocks/stats.js"; import { TabBlockComponent } from "./blocks/tab.js"; import { TableBlockComponent } from "./blocks/table.js"; import type { Block, BlockInteraction } from "./types.js"; function renderBlock( block: Block, onAction: (interaction: BlockInteraction) => void, ): React.ReactNode { switch (block.type) { case "header": return ; case "section": return ; case "divider": return ; case "fields": return ; case "table": return ; case "actions": return ; case "stats": return ; case "form": return ; case "image": return ; case "context": return ; case "columns": return ; case "chart": return ; case "meter": return ; case "banner": return ; case "code": return ; case "tab": return ; case "empty": return ; case "accordion": return ; default: { const _exhaustive: never = block; return null; } } } export interface BlockRendererProps { blocks: Block[]; onAction: (interaction: BlockInteraction) => void; } export function BlockRenderer({ blocks, onAction }: BlockRendererProps) { return (
{blocks.map((block, i) => (
{renderBlock(block, onAction)}
))}
); }