import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert'; import { Button } from '@/components/ui/button'; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from '@/components/ui/collapsible'; import { AlertCircle, ChevronDown, Settings } from 'lucide-react'; import type { GeneratedImage, ImageError, ProviderTiming, } from '../lib/image-types'; import { PROVIDER_ORDER, type ProviderKey, initializeProviderRecord, } from '../lib/provider-config'; import { ImageCarousel } from './ImageCarousel'; import { ImageDisplay } from './ImageDisplay'; interface ImageGeneratorProps { images: GeneratedImage[]; errors: ImageError[]; failedProviders: ProviderKey[]; timings: Record; enabledProviders: Record; toggleView: () => void; } export function ImageGenerator({ images, errors, failedProviders, timings, enabledProviders, toggleView, }: ImageGeneratorProps) { return (
{/* If there are errors, render a collapsible alert */} {errors.length > 0 && (
{errors.map((err, index) => (
{err.provider} Error {err.message}
))}
)}

Generated Images

{/* Mobile layout: Carousel */}
()} />
{/* Desktop layout: Grid */}
{PROVIDER_ORDER.map((provider) => { const imageItem = images.find((img) => img.provider === provider); const imageData = imageItem?.image; const timing = timings[provider]; return ( ); })}
); }