import React, { useCallback, useContext, useMemo, useState } from "react"; import { ThemeProvider } from "styled-components"; import { getTheme, Theme } from "@/lib"; import GlobalStyles from "@/lib/theme"; interface ThemeContextProps { isDarkMode: boolean; toggleDarkMode: () => void; theme: Theme; } const ThemeContext = React.createContext({} as ThemeContextProps); type CustomThemeProviderProps = { children: React.ReactNode; isDarkThemeDefault?: boolean; }; const ThemeProviderContext = ({ children, isDarkThemeDefault = false, }: CustomThemeProviderProps) => { const [isDarkMode, setIsDarkMode] = useState(isDarkThemeDefault); const theme = useMemo(() => getTheme(isDarkMode), [isDarkMode]); const toggleDarkMode = useCallback(() => { setIsDarkMode(!isDarkMode); }, [isDarkMode]); return ( <> {children} ); }; const useThemeContext = () => useContext(ThemeContext); export { ThemeProviderContext, useThemeContext };