2023-01-29 18:57:24 +01:00
|
|
|
// Hooks
|
2022-05-13 21:11:39 +02:00
|
|
|
import { useRouter } from 'next/router'
|
2023-01-29 18:57:24 +01:00
|
|
|
// Components
|
|
|
|
import { Header } from 'site/components/header.mjs'
|
|
|
|
import { Footer } from 'site/components/footer.mjs'
|
2022-05-13 21:11:39 +02:00
|
|
|
|
2023-01-29 18:57:24 +01:00
|
|
|
export const LayoutWrapper = ({ app, children = [] }) => {
|
2022-05-13 21:11:39 +02:00
|
|
|
const startNavigation = () => {
|
|
|
|
app.startLoading()
|
|
|
|
// Force close of menu on mobile if it is open
|
2022-05-14 19:52:16 +02:00
|
|
|
if (app.primaryMenu) app.setPrimaryMenu(false)
|
2022-05-13 21:11:39 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
const router = useRouter()
|
|
|
|
router.events?.on('routeChangeStart', startNavigation)
|
2022-05-14 19:48:04 +02:00
|
|
|
router.events?.on('routeChangeComplete', app.stopLoading)
|
2022-05-13 21:11:39 +02:00
|
|
|
|
|
|
|
return (
|
2022-09-25 00:12:24 -04:00
|
|
|
<div
|
|
|
|
className={`
|
2022-05-13 21:11:39 +02:00
|
|
|
flex flex-col justify-between
|
|
|
|
min-h-screen
|
|
|
|
bg-base-100
|
2022-09-25 00:12:24 -04:00
|
|
|
`}
|
|
|
|
>
|
|
|
|
<Header app={app} />
|
2022-05-13 21:11:39 +02:00
|
|
|
<main className="grow">{children}</main>
|
|
|
|
<Footer app={app} />
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|