Skip to content
Snippets Groups Projects
LayoutWrapper.vue 1.09 KiB
Newer Older
<script lang="ts" setup>
export interface Props {
Remi  PLANEL's avatar
Remi PLANEL committed
  fluid?: boolean
  toc?: boolean
  edit?: boolean
}

const props = withDefaults(defineProps<Props>(), {
  fluid: false,
  toc: true,
  edit: true
});
Remi  PLANEL's avatar
Remi PLANEL committed
const drawer = ref(true);

const { page } = useContent();
const scrollThreshold = ref(200)
const density = ref<'compact' | 'prominent'>("prominent")
function onScroll() {
  if (window.scrollY > scrollThreshold.value) {
    density.value = "compact"
  }
  else { density.value = "prominent" }
}

</script>

<template>
  <VApp>
    <v-main style="min-height: 300px">
      <v-container v-scroll="onScroll" :fluid="fluid">
        <slot />
        <!-- </v-card-text>
          </v-card> -->
        <EditGitlab v-if="edit" />
        <NavPrevNext v-if="edit" />
      </v-container>
      <!-- <Footer></Footer> -->
    </v-main>
Remi  PLANEL's avatar
Remi PLANEL committed
    <NavNavbar v-model:drawer="drawer" :density="density"  />
    <slot name="drawer" :drawer="drawer">
      <NavDrawer :drawer="drawer" />
    </slot>
    <NavTableOfContent v-if="toc" :links="page.body.toc.links" />
    <nav-back-to-top />
  </VApp>
</template>

<style scoped></style>