You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
908 B
29 lines
908 B
import { useState } from "react" |
|
import Navbar from "./elements/navbar" |
|
import Footer from "./elements/footer" |
|
import NotificationBanner from "./elements/notification-banner" |
|
|
|
const Layout = ({ children, global, pageContext }) => { |
|
const { navbar, footer, notificationBanner } = global.attributes |
|
|
|
const [bannerIsShown, setBannerIsShown] = useState(true) |
|
return ( |
|
<div className="flex flex-col justify-between min-h-screen"> |
|
{/* Aligned to the top */} |
|
<div className="flex-1"> |
|
{notificationBanner && bannerIsShown && ( |
|
<NotificationBanner |
|
data={notificationBanner} |
|
closeSelf={() => setBannerIsShown(false)} |
|
/> |
|
)} |
|
<Navbar navbar={navbar} pageContext={pageContext} /> |
|
<div>{children}</div> |
|
</div> |
|
{/* Aligned to the bottom */} |
|
<Footer footer={footer} /> |
|
</div> |
|
) |
|
} |
|
|
|
export default Layout
|
|
|