"use client" import * as React from "react" import { Moon, Sun, Monitor } 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 ThemeToggle() { const { setTheme, theme } = useTheme() // Write the new theme choice through to the server so session.user.theme // stays canonical. Fire-and-forget — ThemeSessionBridge re-syncs from // session on next session refresh if the request fails. const writeTheme = (next: 'light' | 'dark' | 'system') => { setTheme(next) fetch('/api/me/theme', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ theme: next }), }).catch(() => { // Silent fail on network error — the desktop affordance is best-effort. // The mobile profile Theme section is the explicit-error UX. }) } return ( writeTheme("light")}> Light writeTheme("dark")}> Dark writeTheme("system")}> System ) }