'use client'; import * as React from 'react'; import { X, Settings as SettingsIcon, RotateCcw } from 'lucide-react'; import { Button } from './Button'; import { Card } from './Card'; import { Select } from './Select'; import { getSettings, saveSettings, resetSettings, type UserSettings } from '@/lib/storage/settings'; interface SettingsModalProps { isOpen: boolean; onClose: () => void; } export function SettingsModal({ isOpen, onClose }: SettingsModalProps) { const [settings, setSettings] = React.useState(getSettings()); // Load settings when modal opens React.useEffect(() => { if (isOpen) { setSettings(getSettings()); } }, [isOpen]); const handleSettingChange = (key: keyof UserSettings, value: any) => { const updated = { ...settings, [key]: value }; setSettings(updated); saveSettings({ [key]: value }); }; const handleReset = () => { if (confirm('Are you sure you want to reset all settings to defaults?')) { resetSettings(); setSettings(getSettings()); } }; if (!isOpen) return null; return ( <> {/* Backdrop */}
{/* Modal */}
{/* Header */}

Settings

{/* Settings */}
{/* Quality Preferences */}

Quality Preferences

handleSettingChange('autoStartConversion', e.target.checked)} className="w-4 h-4 rounded border-border text-primary focus:ring-2 focus:ring-primary" /> Auto-start conversion when files are selected
{/* Default Formats */}

Default Output Formats

handleSettingChange('defaultAudioFormat', value === 'none' ? undefined : value) } options={[ { value: 'none', label: 'No default' }, { value: 'mp3', label: 'MP3' }, { value: 'wav', label: 'WAV' }, { value: 'ogg', label: 'OGG' }, { value: 'aac', label: 'AAC' }, ]} />