45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
// Type Imports
|
|
import type { ChildrenType, Direction } from '@core/types'
|
|
|
|
// Context Imports
|
|
import { VerticalNavProvider } from '@menu/contexts/verticalNavContext'
|
|
import { SettingsProvider } from '@core/contexts/settingsContext'
|
|
import ThemeProvider from '@components/theme'
|
|
import ReduxProvider from '@/redux-store/ReduxProvider'
|
|
|
|
// Styled Component Imports
|
|
import AppReactToastify from '@/libs/styles/AppReactToastify'
|
|
|
|
// Util Imports
|
|
import { getMode, getSettingsFromCookie, getSystemMode } from '@core/utils/serverHelpers'
|
|
import { AuthProvider } from '../contexts/authContext'
|
|
|
|
type Props = ChildrenType & {
|
|
direction: Direction
|
|
}
|
|
|
|
const Providers = async (props: Props) => {
|
|
// Props
|
|
const { children, direction } = props
|
|
|
|
// Vars
|
|
const mode = await getMode()
|
|
const settingsCookie = await getSettingsFromCookie()
|
|
const systemMode = await getSystemMode()
|
|
|
|
return (
|
|
<AuthProvider>
|
|
<VerticalNavProvider>
|
|
<SettingsProvider settingsCookie={settingsCookie} mode={mode}>
|
|
<ThemeProvider direction={direction} systemMode={systemMode}>
|
|
<ReduxProvider>{children}</ReduxProvider>
|
|
<AppReactToastify direction={direction} hideProgressBar />
|
|
</ThemeProvider>
|
|
</SettingsProvider>
|
|
</VerticalNavProvider>
|
|
</AuthProvider>
|
|
)
|
|
}
|
|
|
|
export default Providers
|