'use client'; import * as React from 'react'; import { Moon, Sun } from 'lucide-react'; import { useTheme } from 'next-themes'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; export function ModeToggle() { const { setTheme } = useTheme(); const handleThemeChange = async (newTheme: 'light' | 'dark' | 'system') => { // Update next-themes immediately for UI responsiveness setTheme(newTheme); // Sync with database in background try { await fetch('/api/users/theme', { method: 'PUT', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ themePreference: newTheme }), }); } catch (error) { console.error('Failed to sync theme preference:', error); } }; return ( handleThemeChange('light')}>Light handleThemeChange('dark')}>Dark handleThemeChange('system')}>System ); }