'use client'; import GlobalContext from '@/context/GlobalContext'; import { ThemeService } from '@/services/theme.service'; import { ICategory, ICategoryContext } from '@/typings/category.type'; import { ITheme } from '@/typings/theme.type'; import { useState, useMemo, useEffect, ReactNode } from 'react'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; import { IBurger } from '@/typings/burger.type'; interface IProps { children: ReactNode; } const MainProvider = ({ children }: IProps) => { const [theme, setTheme] = useState('light'); const [category, setCategory] = useState({ id: 1, name: '', }); const [burgerOpen, setBurgerOpen] = useState(false); const themeContext: ITheme = useMemo(() => ({ theme, setTheme }), [theme, setTheme]); const categoryContext: ICategoryContext = useMemo( () => ({ category, setCategory }), [category, setCategory], ); const burgerContext: IBurger = useMemo( () => ({ burgerOpen, setBurgerOpen }), [burgerOpen, setBurgerOpen], ); useEffect(() => { setTheme(ThemeService.getLocalTheme() || 'light'); }, []); // Store theme in localStorage everytime it changes useEffect(() => { ThemeService.setLocalTheme(themeContext.theme); }, [themeContext]); return (
{children}
); }; export default MainProvider;