'use client' import * as React from 'react' import { ImageOff, Loader2, RefreshCw } from 'lucide-react' import { cn } from '../../lib/utils' import type { SlideData } from './types' export interface SlideCanvasProps { slide: SlideData /** Retry/regenerate handler shown in the error state. */ onRetry?: () => void /** Render structured slides (future); falls back to content text for now. */ renderStructured?: (slide: SlideData) => React.ReactNode className?: string } /** * Renders a single slide at a fixed 16:9 aspect ratio. Image render mode shows * the generated full-bleed image with loading / error states; structured mode * delegates to `renderStructured`. App-agnostic. */ export function SlideCanvas({ slide, onRetry, renderStructured, className }: SlideCanvasProps) { const status = slide.status ?? (slide.imageUrl ? 'ready' : 'pending') const mode = slide.renderMode ?? 'image' return (
This slide failed to generate.
{onRetry && ( )}{status === 'generating' ? `Generating slide ${slide.slideNumber}…` : 'Waiting to generate…'}