import React, { useContext, useCallback, useEffect } from 'react'; import { Sun, Moon, Monitor } from 'lucide-react'; import { ThemeContext } from '~/hooks'; const Theme = ({ theme, onChange }: { theme: string; onChange: (value: string) => void }) => { const themeIcons = { system: , dark: , light: , }; return (
); }; const ThemeSelector = ({ returnThemeOnly }: { returnThemeOnly?: boolean }) => { const { theme, setTheme } = useContext(ThemeContext); const changeTheme = useCallback( (value: string) => { setTheme(value); }, [setTheme], ); useEffect(() => { if (theme === 'system') { const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)').matches; setTheme(prefersDarkScheme ? 'dark' : 'light'); } }, [theme, setTheme]); if (returnThemeOnly === true) { return ; } return (
); }; export default ThemeSelector;