{"ast":null,"code":"var _jsxFileName = \"/home/gnx/Desktop/ETB/ETB-FrontEnd/src/theme/ThemeProvider.tsx\",\n _s = $RefreshSig$(),\n _s2 = $RefreshSig$();\nimport React, { createContext, useContext, useState, useEffect } from 'react';\nimport { ThemeProvider as MuiThemeProvider, CssBaseline } from '@mui/material';\nimport { lightTheme, darkTheme } from './theme';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst ThemeContext = /*#__PURE__*/createContext(undefined);\nexport const ThemeProvider = ({\n children\n}) => {\n _s();\n const [mode, setModeState] = useState('light');\n\n // Load theme preference from localStorage or system preference\n useEffect(() => {\n const savedMode = localStorage.getItem('theme-mode');\n if (savedMode) {\n setModeState(savedMode);\n } else {\n // Check system preference\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n setModeState(prefersDark ? 'dark' : 'light');\n }\n }, []);\n\n // Listen for system theme changes\n useEffect(() => {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = e => {\n if (!localStorage.getItem('theme-mode')) {\n setModeState(e.matches ? 'dark' : 'light');\n }\n };\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n const setMode = newMode => {\n setModeState(newMode);\n localStorage.setItem('theme-mode', newMode);\n };\n const toggleMode = () => {\n const newMode = mode === 'light' ? 'dark' : 'light';\n setMode(newMode);\n };\n const theme = mode === 'light' ? lightTheme : darkTheme;\n return /*#__PURE__*/_jsxDEV(ThemeContext.Provider, {\n value: {\n mode,\n toggleMode,\n setMode\n },\n children: /*#__PURE__*/_jsxDEV(MuiThemeProvider, {\n theme: theme,\n children: [/*#__PURE__*/_jsxDEV(CssBaseline, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 60,\n columnNumber: 9\n }, this), children]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 59,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 58,\n columnNumber: 5\n }, this);\n};\n_s(ThemeProvider, \"KR71vjJadkLYqRKlcKfHlwKkXLk=\");\n_c = ThemeProvider;\nexport const useTheme = () => {\n _s2();\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n_s2(useTheme, \"b9L3QQ+jgeyIrH0NfHrJ8nn7VMU=\");\nvar _c;\n$RefreshReg$(_c, \"ThemeProvider\");","map":{"version":3,"names":["React","createContext","useContext","useState","useEffect","ThemeProvider","MuiThemeProvider","CssBaseline","lightTheme","darkTheme","jsxDEV","_jsxDEV","ThemeContext","undefined","children","_s","mode","setModeState","savedMode","localStorage","getItem","prefersDark","window","matchMedia","matches","mediaQuery","handleChange","e","addEventListener","removeEventListener","setMode","newMode","setItem","toggleMode","theme","Provider","value","fileName","_jsxFileName","lineNumber","columnNumber","_c","useTheme","_s2","context","Error","$RefreshReg$"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/src/theme/ThemeProvider.tsx"],"sourcesContent":["import React, { createContext, useContext, useState, useEffect, ReactNode } from 'react';\nimport { ThemeProvider as MuiThemeProvider, CssBaseline } from '@mui/material';\nimport { lightTheme, darkTheme } from './theme';\n\ninterface ThemeContextType {\n mode: 'light' | 'dark';\n toggleMode: () => void;\n setMode: (mode: 'light' | 'dark') => void;\n}\n\nconst ThemeContext = createContext(undefined);\n\ninterface ThemeProviderProps {\n children: ReactNode;\n}\n\nexport const ThemeProvider: React.FC = ({ children }) => {\n const [mode, setModeState] = useState<'light' | 'dark'>('light');\n\n // Load theme preference from localStorage or system preference\n useEffect(() => {\n const savedMode = localStorage.getItem('theme-mode');\n if (savedMode) {\n setModeState(savedMode as 'light' | 'dark');\n } else {\n // Check system preference\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n setModeState(prefersDark ? 'dark' : 'light');\n }\n }, []);\n\n // Listen for system theme changes\n useEffect(() => {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handleChange = (e: MediaQueryListEvent) => {\n if (!localStorage.getItem('theme-mode')) {\n setModeState(e.matches ? 'dark' : 'light');\n }\n };\n\n mediaQuery.addEventListener('change', handleChange);\n return () => mediaQuery.removeEventListener('change', handleChange);\n }, []);\n\n const setMode = (newMode: 'light' | 'dark') => {\n setModeState(newMode);\n localStorage.setItem('theme-mode', newMode);\n };\n\n const toggleMode = () => {\n const newMode = mode === 'light' ? 'dark' : 'light';\n setMode(newMode);\n };\n\n const theme = mode === 'light' ? lightTheme : darkTheme;\n\n return (\n \n \n \n {children}\n \n \n );\n};\n\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}