import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { useState, useEffect } from "react"; import { Sun, Moon, Monitor } from "lucide-react"; interface SettingsModalProps { isOpen: boolean; onClose: () => void; } type Theme = 'light' | 'dark' | 'system'; type Language = 'en' | 'fr' | 'de' | 'it' | 'hi' | 'ar' | 'ja' | 'ko' | 'zh-TW' | 'zh-CN'; const languages = [ { code: 'en', name: 'English' }, { code: 'fr', name: 'Français' }, { code: 'de', name: 'Deutsch' }, { code: 'it', name: 'Italiano' }, { code: 'hi', name: 'हिन्दी' }, { code: 'ar', name: 'العربية' }, { code: 'ja', name: '日本語' }, { code: 'ko', name: '한국어' }, { code: 'zh-TW', name: '繁體中文' }, { code: 'zh-CN', name: '简体中文' }, ]; export default function SettingsModal({ isOpen, onClose }: SettingsModalProps) { const [theme, setTheme] = useState('system'); const [language, setLanguage] = useState('en'); useEffect(() => { // Load saved settings const savedTheme = localStorage.getItem('theme') as Theme || 'system'; const savedLanguage = localStorage.getItem('language') as Language || 'en'; setTheme(savedTheme); setLanguage(savedLanguage); // Apply theme applyTheme(savedTheme); }, []); const applyTheme = (selectedTheme: Theme) => { const root = document.documentElement; if (selectedTheme === 'system') { const systemPreference = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; root.classList.toggle('dark', systemPreference === 'dark'); } else { root.classList.toggle('dark', selectedTheme === 'dark'); } }; const handleThemeChange = (newTheme: Theme) => { setTheme(newTheme); localStorage.setItem('theme', newTheme); applyTheme(newTheme); }; const handleLanguageChange = (newLanguage: Language) => { setLanguage(newLanguage); localStorage.setItem('language', newLanguage); // Here you would trigger language change in your app // For now, just save to localStorage }; return ( Settings Customize your theme and language preferences
{/* Theme Selection */}
{/* Language Selection */}
{languages.map((lang) => ( ))}
); }