export interface SlideImage { src: string; alt: string; width?: number; height?: number; position?: string; } export interface SlideContent { intro?: string; tagline?: string; heading?: string; subheading?: string; description?: string; bullets?: string[]; steps?: (string | { label: string; icon: string; delay: number })[]; leftCard?: { title: string; description: string; icon: string }; rightCard?: { title: string; description: string; icon: string }; metrics?: { label: string; value: string; emoji: string }[]; categories?: { name: string; description: string }[]; cards?: { name: string; description: string; url: string; icon: string }[]; callToAction?: { text: string; url: string; icon?: string }; title?: string; subtitle?: string; } export interface SlideAnimation { type: string; duration: number; stagger?: number; [key: string]: any; } export interface Slide { id: number; title: string; subtitle?: string; description?: string; type: 'hero' | 'problem' | 'solution' | 'comparison' | 'tool-intro' | 'features' | 'process' | 'use-cases' | 'diagram' | 'summary' | 'vision' | 'closing'; animation: SlideAnimation; background: string; backgroundImage: string | null; content: SlideContent; images: SlideImage[]; transition: string; } export interface PresentationData { metadata: { title: string; subtitle: string; author: string; date: string; description: string; }; slides: Slide[]; // Tools and other extra data can be typed as needed, but for rendering we focus on slides [key: string]: any; }