"use client"; import React from "react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Laptop, Moon, Sun, type LucideIcon } from "lucide-react"; import { useTheme } from "next-themes"; import { useEffect, useState, useMemo } from "react"; interface ThemeSwitcherComponentProps { showTitle?: boolean; } type ThemeOption = { value: string; icon: LucideIcon; label: string; }; const ICON_SIZE = 16; const themeOptions: ThemeOption[] = [ { value: "light", icon: Sun, label: "Light" }, { value: "dark", icon: Moon, label: "Dark" }, { value: "system", icon: Laptop, label: "System" }, ]; const ThemeSwitcherComponent = ({ showTitle = false, }: ThemeSwitcherComponentProps) => { const [mounted, setMounted] = useState(false); const { theme, setTheme } = useTheme(); useEffect(() => { setMounted(true); }, []); const currentTheme = useMemo( () => themeOptions.find((option) => option.value === theme) || themeOptions[2], [theme] ); if (!mounted) { return null; } return ( {themeOptions.map((option) => ( {/* */} {option.label} ))} ); }; export const ThemeSwitcher = React.memo(ThemeSwitcherComponent);