document driven
useContent()
The useContent() composable gives access to the current page, surrounding pages and global data.
When the document driven mode is enabled, useContent()
is available everywhere in your app and gives access to a list of refs based on your content.
<script setup lang="ts">const { // Global references globals, navigation, surround, page, // Computed properties from `page` key excerpt, toc, type, layout, // Computed properties from `surround` key next, prev} = useContent()</script>
Rendering the page
Rendering the current page becomes a bliss with this composable:
pages/[...slug].vue
<script setup lang="ts">const { page } = useContent()</script><template> <ContentRenderer :key="page._id" :value="page" /></template>
Previous/next page component
PagePrevNext.vue
<script setup lang="ts">const { prev, next } = useContent()</script><template> <div> <NuxtLink v-if="prev" :to="prev._path">{{ prev.title }}</NuxtLink> <NuxtLink v-if="next" :to="next._path">{{ next.title }}</NuxtLink> </div></template>
Table of Contents component
PageToc.vue
<script setup lang="ts">const { toc } = useContent()</script><template> <div> <ul v-if="toc && toc.links"> <li v-for="link in toc.links" :key="link.text"> <a :href="`#${link.id}`"> {{ link.text }} </a> </li> </ul> </div></template>