"use client"; import { Button } from "@app/components/ui/button"; import { Laptop, Moon, Sun } from "lucide-react"; import { useTranslations } from "next-intl"; import { useTheme } from "next-themes"; import { useEffect, useState } from "react"; export default function ThemeSwitcher() { const { setTheme, theme, resolvedTheme } = useTheme(); const [mounted, setMounted] = useState(false); const t = useTranslations(); useEffect(() => { setMounted(true); }, []); if (!mounted) { return ( ); } function cycleTheme() { const currentTheme = theme || "system"; if (currentTheme === "light") { setTheme("dark"); } else if (currentTheme === "dark") { setTheme("system"); } else { setTheme("light"); } } function getThemeIcon() { const currentTheme = theme || "system"; if (currentTheme === "light") { return ; } else if (currentTheme === "dark") { return ; } else { // When theme is "system", show icon based on resolved theme if (resolvedTheme === "light") { return ; } else if (resolvedTheme === "dark") { return ; } else { // Fallback to laptop icon if resolvedTheme is not available return ; } } } function getThemeText() { const currentTheme = theme || "system"; const translated = t(currentTheme); return translated.charAt(0).toUpperCase() + translated.slice(1); } return ( ); }