import React, { useState } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import { X, Save, Server, Palette, Cpu, BookOpen, Star, Cat, Cloud, Database } from 'lucide-react'; import { AppSettings, ZodiacSign, Familiar, AIProvider } from '../types'; import { Button } from './Button'; interface SettingsModalProps { isOpen: boolean; onClose: () => void; settings: AppSettings; onSave: (settings: AppSettings) => void; } const zodiacSigns: ZodiacSign[] = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo', 'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces']; const familiars: Familiar[] = ['Cat', 'Owl', 'Toad', 'Bat', 'Crow', 'Wolf', 'None']; export const SettingsModal: React.FC = ({ isOpen, onClose, settings, onSave }) => { const [localSettings, setLocalSettings] = useState(settings); const [activeTab, setActiveTab] = useState<'general' | 'identity' | 'ai'>('general'); const handleSave = () => { onSave(localSettings); onClose(); }; return ( {isOpen && ( <>
{/* Header */}

The Grimoire

{/* Tabs */}
{activeTab === 'general' ? ( <>

Aura Colors

setLocalSettings({...localSettings, momColor: e.target.value})} className="w-full h-10 rounded bg-transparent cursor-pointer" />
setLocalSettings({...localSettings, dadColor: e.target.value})} className="w-full h-10 rounded bg-transparent cursor-pointer" />

Telepathy Link (SSE)

{localSettings.enableMcp && ( setLocalSettings({...localSettings, mcpServerUrl: e.target.value})} className="w-full p-3 rounded-xl bg-black/50 border border-white/10 text-gray-300 text-sm font-mono focus:border-purple-500 outline-none" placeholder="http://server..." /> )}
) : activeTab === 'identity' ? ( <>

Star Signs

House Familiar

Your spiritual guardian.

) : ( <>

Intelligence Source

{localSettings.aiProvider === 'ollama' && (

Local Spirit

Ensure Ollama is running with CORS enabled.

setLocalSettings({...localSettings, ollamaUrl: e.target.value})} className="w-full p-3 rounded-xl bg-black/50 border border-white/10 text-gray-300 text-sm font-mono focus:border-blue-500 outline-none" placeholder="http://localhost:11434" />
setLocalSettings({...localSettings, ollamaModel: e.target.value})} className="w-full p-3 rounded-xl bg-black/50 border border-white/10 text-gray-300 text-sm font-mono focus:border-blue-500 outline-none" placeholder="llama3" />
)} )}
)}
); };