'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 (
{mode === 'structured' && renderStructured ? ( renderStructured(slide) ) : status === 'ready' && slide.imageUrl ? ( // eslint-disable-next-line @next/next/no-img-element {slide.alt ) : status === 'error' ? (
) : (
)}
) }