components/layout.vue (47 lines of code) (raw):

<script> import { mapState } from 'vuex'; import Navbar from './navbar.vue'; import Sidebar from './sidebar.vue'; import FooterNav from './footer_nav.vue'; export default { components: { Navbar, Sidebar, FooterNav, }, props: { noFooter: { type: Boolean, required: false, default: false, }, }, computed: { ...mapState(['sidebarOpen']), }, }; </script> <template> <div class="page"> <a href="#skipTarget" class="skip-link">Skip to main content</a> <navbar class="gl-border-b gl-fixed gl-left-0 gl-right-0 gl-top-0 gl-z-200 gl-bg-subtle gl-shadow-sm md:gl-hidden" /> <sidebar /> <main class="main" :class="{ 'sidebar--open': sidebarOpen }"> <nuxt /> </main> <footer-nav v-if="!noFooter" /> </div> </template> <style lang="scss"> *, *:before, *:after { box-sizing: border-box; } body { margin: 0; padding: 0; } </style>