/** * Type definitions for Payload block data structures */ /** * ViewSchema props - inherited by all blocks * These map to framework ViewSchema component props */ interface ViewSchemaProps { padding?: 'none' | 'tiny' | 'small' | 'medium' | 'large' | 'extra-large'; marginTop?: 'none' | 'tiny' | 'small' | 'medium' | 'large' | 'extra-large'; marginBottom?: 'none' | 'tiny' | 'small' | 'medium' | 'large' | 'extra-large'; width?: string; maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'false'; background?: string; color?: string; backgroundImage?: string; backgroundGradient?: string; className?: string; sx?: any; id?: string; } interface BaseBlock extends Omit { blockType: string; id?: string; backgroundImage?: { url: string; alt?: string; } | string; } interface HeroBlockData extends BaseBlock { blockType: 'hero'; title: string; subtitle?: string; backgroundImage?: { url: string; alt?: string; }; backgroundGradient?: string; textAlign?: 'left' | 'center' | 'right'; blockHeight?: 'small' | 'medium' | 'large' | 'viewport'; actions?: Array<{ label: string; href: string; variant?: 'contained' | 'outlined' | 'text'; buttonSize?: 'small' | 'medium' | 'large'; }>; } interface TextSectionBlockData extends BaseBlock { blockType: 'textSection'; heading?: string; content: any; padding?: 'none' | 'small' | 'medium' | 'large'; background?: 'default' | 'surface' | 'surface-variant' | 'primary'; textAlign?: 'left' | 'center' | 'right'; maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'false'; } interface FeatureGridBlockData extends BaseBlock { blockType: 'featureGrid'; heading?: string; features: Array<{ id: string; title: string; description: string; icon?: string; }>; columns?: number; spacing?: 'small' | 'medium' | 'large'; padding?: 'none' | 'small' | 'medium' | 'large'; background?: 'default' | 'surface' | 'surface-variant'; } interface CTASectionBlockData extends BaseBlock { blockType: 'ctaSection'; heading: string; description?: string; buttons: Array<{ label: string; href: string; variant?: 'contained' | 'outlined' | 'text'; size?: 'small' | 'medium' | 'large'; }>; padding?: 'small' | 'medium' | 'large'; background?: 'default' | 'surface' | 'primary'; textAlign?: 'left' | 'center' | 'right'; } interface ImageBlockData extends BaseBlock { blockType: 'image'; image: { url: string; width?: number; height?: number; }; alt: string; caption?: string; size?: 'small' | 'medium' | 'large' | 'full'; } interface SpacerBlockData extends BaseBlock { blockType: 'spacer'; height?: 'small' | 'medium' | 'large' | 'xlarge'; } interface CodeBlockData extends BaseBlock { blockType: 'code'; code: string; language?: string; title?: string; showCopy?: boolean; showLineNumbers?: boolean; wrapLines?: boolean; } interface ProductGridBlockData extends BaseBlock { blockType: 'productGrid'; heading?: string; products: Array<{ id: string; name: string; slug: string; category?: string; tagline?: string; description: any; icon?: { url: string; }; image?: { url: string; }; status: string; features?: Array<{ title: string; description?: string; }>; technologies?: string; actions?: Array<{ id: string; label: string; url: string; variant?: 'contained' | 'outlined' | 'text'; color?: 'primary' | 'secondary' | 'error'; disabled?: boolean; openInNewTab?: boolean; }>; githubUrl?: string; docsUrl?: string; demoUrl?: string; }>; variant?: 'compact' | 'detailed'; columns?: number; spacing?: 'small' | 'medium' | 'large'; padding?: 'none' | 'small' | 'medium' | 'large'; background?: 'default' | 'surface' | 'surface-variant'; equalHeight?: boolean; } interface AccordionBlockData extends BaseBlock { blockType: 'accordion'; heading?: string; items: Array<{ title: string; content: any; defaultExpanded?: boolean; }>; allowMultiple?: boolean; variant?: 'outlined' | 'filled' | 'plain'; padding?: 'none' | 'small' | 'medium' | 'large'; } interface CardGridBlockData extends BaseBlock { blockType: 'cardGrid'; heading?: string; cards: Array<{ title: string; description?: string; image?: { url: string; }; imageUrl?: string; icon?: string; link?: string; linkText?: string; }>; columns?: number; spacing?: 'small' | 'medium' | 'large'; cardVariant?: 'outlined' | 'elevation' | 'filled'; padding?: 'none' | 'small' | 'medium' | 'large'; background?: 'default' | 'surface' | 'surface-variant'; } interface FormBlockData extends BaseBlock { blockType: 'form'; form: { id: string; formName: string; title: string; description?: string; fields: Array<{ fieldName: string; label: string; inputType: 'text' | 'email' | 'tel' | 'number' | 'textarea' | 'select' | 'checkbox'; required?: boolean; placeholder?: string; options?: Array<{ label: string; value: string; }>; }>; submitButtonText?: string; successMessage?: string; enableCaptcha?: boolean; }; overrideHeading?: string; overrideDescription?: string; overrideSubmitButtonText?: string; overrideSuccessMessage?: string; padding?: 'none' | 'small' | 'medium' | 'large'; } interface MarkdownBlockData extends BaseBlock { blockType: 'markdown'; heading?: string; content: string; textAlign?: 'left' | 'center' | 'right'; maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'false'; padding?: 'none' | 'small' | 'medium' | 'large'; } type BlockData = HeroBlockData | TextSectionBlockData | FeatureGridBlockData | CTASectionBlockData | ImageBlockData | SpacerBlockData | CodeBlockData | ProductGridBlockData | AccordionBlockData | CardGridBlockData | FormBlockData | MarkdownBlockData; /** * Props for BlockRenderer component */ interface BlockRendererProps { /** Array of blocks from Payload CMS */ blocks?: BlockData[]; /** Optional className for the container */ className?: string; } /** * BlockRenderer Component * * Renders an array of Payload blocks as QwickApps Framework components */ export declare function BlockRenderer({ blocks, className }: BlockRendererProps): import("react/jsx-runtime").JSX.Element; export default BlockRenderer; //# sourceMappingURL=BlockRenderer.d.ts.map