77 lines
2.4 KiB
TypeScript
Raw Normal View History

2025-08-05 12:35:40 +07:00
// MUI Imports
import Button from '@mui/material/Button'
// Type Imports
import type { ChildrenType } from '@core/types'
import type { Locale } from '@configs/i18n'
// Layout Imports
import LayoutWrapper from '@layouts/LayoutWrapper'
import VerticalLayout from '@layouts/VerticalLayout'
import HorizontalLayout from '@layouts/HorizontalLayout'
// Component Imports
import Providers from '@components/Providers'
import Navigation from '@components/layout/vertical/Navigation'
import Header from '@components/layout/horizontal/Header'
import Navbar from '@components/layout/vertical/Navbar'
import VerticalFooter from '@components/layout/vertical/Footer'
import HorizontalFooter from '@components/layout/horizontal/Footer'
import Customizer from '@core/components/customizer'
import ScrollToTop from '@core/components/scroll-to-top'
import AuthGuard from '@/hocs/AuthGuard'
// Config Imports
import { i18n } from '@configs/i18n'
// Util Imports
import { getDictionary } from '@/utils/getDictionary'
import { getMode, getSystemMode } from '@core/utils/serverHelpers'
const Layout = async (props: ChildrenType & { params: Promise<{ lang: Locale }> }) => {
const params = await props.params
const { children } = props
// Vars
const direction = i18n.langDirection[params.lang]
const dictionary = await getDictionary(params.lang)
const mode = await getMode()
const systemMode = await getSystemMode()
return (
<Providers direction={direction}>
<AuthGuard locale={params.lang}>
<LayoutWrapper
systemMode={systemMode}
verticalLayout={
<VerticalLayout
navigation={<Navigation dictionary={dictionary} mode={mode} />}
navbar={<Navbar />}
footer={<VerticalFooter />}
>
{children}
</VerticalLayout>
}
horizontalLayout={
<HorizontalLayout header={<Header dictionary={dictionary} />} footer={<HorizontalFooter />}>
{children}
</HorizontalLayout>
}
/>
<ScrollToTop className='mui-fixed'>
<Button
variant='contained'
className='is-10 bs-10 rounded-full p-0 min-is-0 flex items-center justify-center'
>
<i className='tabler-arrow-up' />
</Button>
</ScrollToTop>
<Customizer dir={direction} />
</AuthGuard>
</Providers>
)
}
export default Layout