'use client' import * as React from 'react' import { Block, MergeFieldDefinition } from './types' import { TextBlockEditor, MetricsBlockEditor, DividerBlockEditor, ButtonBlockEditor, ImageBlockEditor, SpacerBlockEditor, SocialBlockEditor, HeaderBlockEditor, FooterBlockEditor, } from './blocks' interface BlockRendererProps { block: Block editing: boolean onChange: (updates: Partial) => void mergeFields: MergeFieldDefinition[] /** Optional custom rich text editor for the text block. */ renderTextEditor?: (props: { content: string onChange: (html: string) => void placeholder?: string className?: string }) => React.ReactNode } export function BlockRenderer({ block, editing, onChange, mergeFields: _mergeFields, renderTextEditor, }: BlockRendererProps) { const commonProps = { isEditing: editing, onChange: onChange as (block: Block) => void, } switch (block.type) { case 'text': return ( onChange(b)} renderEditor={renderTextEditor} /> ) case 'metrics': return ( onChange(b)} /> ) case 'divider': return ( onChange(b)} /> ) case 'cta': return ( onChange(b)} /> ) case 'image': return ( onChange(b)} /> ) case 'spacer': return ( onChange(b)} /> ) case 'social': return ( onChange(b)} /> ) case 'header': return ( onChange(b)} /> ) case 'footer': return ( onChange(b)} /> ) default: return null } }