import React, { useState, useEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { X, Settings, Key, Sparkles, Image as ImageIcon, Lightbulb, Box } from 'lucide-react'; import { cn } from '../lib/utils'; interface ApiSettingsModalProps { isOpen: boolean; onClose: () => void; } export const ApiSettingsModal: React.FC = ({ isOpen, onClose }) => { const [falApiKey, setFalApiKey] = useState(''); const [tripoApiKey, setTripoApiKey] = useState(''); const [meshyApiKey, setMeshyApiKey] = useState(''); const [stabilityApiKey, setStabilityApiKey] = useState(''); const [openAiKey, setOpenAiKey] = useState(''); useEffect(() => { if (isOpen) { setFalApiKey(localStorage.getItem('FAL_API_KEY') || ''); setTripoApiKey(localStorage.getItem('TRIPO_API_KEY') || ''); setMeshyApiKey(localStorage.getItem('MESHY_API_KEY') || ''); setStabilityApiKey(localStorage.getItem('stability_api_key') || ''); setOpenAiKey(localStorage.getItem('openai_api_key') || ''); } }, [isOpen]); const saveKeys = () => { localStorage.setItem('FAL_API_KEY', falApiKey); localStorage.setItem('TRIPO_API_KEY', tripoApiKey); localStorage.setItem('MESHY_API_KEY', meshyApiKey); localStorage.setItem('stability_api_key', stabilityApiKey); localStorage.setItem('openai_api_key', openAiKey); onClose(); }; if (!isOpen) return null; return (
{/* Header */}

Global API Settings

Configure your API keys for AI generation features

{/* Content */}
{/* 3D Generation */}

Image-to-3D Providers

For Hunyuan3D
setFalApiKey(e.target.value)} className="bg-zinc-950 border border-zinc-800 rounded-lg px-4 py-2 text-sm text-white focus:outline-none focus:border-zinc-500" />
For Native Tripo3D
setTripoApiKey(e.target.value)} className="bg-zinc-950 border border-zinc-800 rounded-lg px-4 py-2 text-sm text-white focus:outline-none focus:border-zinc-500" />
For Native Meshy
setMeshyApiKey(e.target.value)} className="bg-zinc-950 border border-zinc-800 rounded-lg px-4 py-2 text-sm text-white focus:outline-none focus:border-zinc-500" />
{/* Viz AI (Image-to-Image & LLM) */}

Titan3d AI & Mockup Generation

For Scene rendering (Image-to-Image)
setStabilityApiKey(e.target.value)} className="bg-zinc-950 border border-zinc-800 rounded-lg px-4 py-2 text-sm text-white focus:outline-none focus:border-blue-500/50" />
For AI Idea Prompt Generation
setOpenAiKey(e.target.value)} className="bg-zinc-950 border border-zinc-800 rounded-lg px-4 py-2 text-sm text-white focus:outline-none focus:border-green-500/50" />
); };