import React, { useState, useEffect } from 'react'; import { motion } from 'framer-motion'; import { X, Palette, Loader2, Check } from 'lucide-react'; import { useBodyScrollLock } from '../hooks/useBodyScrollLock'; import type { UserPreferences } from '../types'; import { COLOR_SCHEMES } from '../types'; interface PreferencesModalProps { isOpen: boolean; onClose: () => void; preferences: UserPreferences; onSave: (prefs: UserPreferences) => Promise; onPreview: (schemeId: string) => void; saving: boolean; } export const PreferencesModal: React.FC = ({ isOpen, onClose, preferences, onSave, onPreview, saving, }) => { useBodyScrollLock(isOpen); const [localPrefs, setLocalPrefs] = useState(preferences); useEffect(() => { if (isOpen) { setLocalPrefs(preferences); } }, [isOpen, preferences]); if (!isOpen) return null; const handleColorSelect = (schemeId: string) => { setLocalPrefs(prev => ({ ...prev, colorScheme: schemeId })); onPreview(schemeId); }; const handleSave = async () => { await onSave(localPrefs); onClose(); }; const handleClose = () => { onPreview(preferences.colorScheme); onClose(); }; return ( e.stopPropagation()} >

Color Scheme

Customize your theme

{COLOR_SCHEMES.map((scheme) => ( ))}

{COLOR_SCHEMES.find(s => s.id === localPrefs.colorScheme)?.name || 'Select a color'}

); };