import React, { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { X, Download, Image as ImageIcon, Layers, Settings, Monitor, Smartphone, Maximize2 } from 'lucide-react'; import { cn } from '../lib/utils'; interface RenderModalProps { isOpen: boolean; onClose: () => void; onRender: (settings: RenderSettings) => void; } export interface RenderSettings { width: number; height: number; includeAlpha: boolean; format: 'png' | 'jpg'; name: string; folder?: string; } const RESOLUTION_PRESETS = [ { label: '7680 x 4800 (8K)', w: 7680, h: 4800 }, { label: '3840 x 2400 (4K)', w: 3840, h: 2400 }, { label: '2560 x 1600 (2K)', w: 2560, h: 1600 }, { label: '1920 x 1200 (Full HD)', w: 1920, h: 1200 }, { label: '1600 x 1000', w: 1600, h: 1000 }, { label: '1280 x 800', w: 1280, h: 800 }, { label: '1024 x 640', w: 1024, h: 640 }, { label: '800 x 500', w: 800, h: 500 }, { label: '640 x 400', w: 640, h: 400 }, ]; export const RenderModal: React.FC = ({ isOpen, onClose, onRender }) => { const [settings, setSettings] = useState({ width: 1920, height: 1200, includeAlpha: true, format: 'png', name: 'Render_1', folder: 'C:/Users/Render/Documents' }); const [activeTab, setActiveTab] = useState('Output'); if (!isOpen) return null; return (
{/* Header */}
Render
{/* Sidebar */}
{['Output', 'Options', 'Queue'].map((tab) => ( ))}
{/* Content */}
{/* Mode Tabs */}
{['Still Image', 'Animation', 'Titan3d XR', 'Configurator', 'CMF'].map((mode) => ( ))}
{/* Name & Resolution */}
setSettings(prev => ({ ...prev, name: e.target.value }))} className="bg-zinc-950 border border-zinc-800 rounded px-3 py-1.5 text-xs text-zinc-300 focus:outline-none focus:border-blue-500/50" />
setSettings(prev => ({ ...prev, folder: e.target.value }))} className="flex-1 bg-zinc-950 border border-zinc-800 rounded px-3 py-1.5 text-xs text-zinc-300 focus:outline-none focus:border-blue-500/50" />
Format
W: setSettings(prev => ({ ...prev, width: parseInt(e.target.value) || 0 }))} className="w-20 bg-zinc-950 border border-zinc-800 rounded px-2 py-1 text-xs text-zinc-300" /> px
H: setSettings(prev => ({ ...prev, height: parseInt(e.target.value) || 0 }))} className="w-20 bg-zinc-950 border border-zinc-800 rounded px-2 py-1 text-xs text-zinc-300" /> px
{/* Collapsible Sections */}
Layers and Passes
Region
{/* Footer */}
); }; const ChevronDown = ({ size, className }: { size: number, className?: string }) => ( );