diff --git a/docs/app.vue b/docs/app.vue index 9851423b..8985b170 100644 --- a/docs/app.vue +++ b/docs/app.vue @@ -9,7 +9,6 @@ @@ -20,7 +19,7 @@ - + @@ -40,24 +39,11 @@ const colorMode = useColorMode() const { prefix, removePrefixFromNavigation, removePrefixFromFiles } = useContentSource() const { mapContentNavigation } = useElementsHelpers() -const { data: navigation } = await useLazyAsyncData('navigation', () => fetchContentNavigation(), { +const { data: nav } = await useAsyncData('navigation', () => fetchContentNavigation()) + +const { data: search } = useLazyFetch('/api/search.json', { default: () => [], - transform: (navigation) => { - navigation = navigation.find(link => link._path === prefix.value)?.children || [] - - return prefix.value === '/main' ? removePrefixFromNavigation(navigation) : navigation - }, - watch: [prefix] -}) - -const { data: files } = await useLazyAsyncData('files', () => queryContent().where({ _type: 'markdown', navigation: { $ne: false } }).find(), { - default: () => [], - transform: (files) => { - files = files.filter(file => file._path.startsWith(prefix.value)) - - return prefix.value === '/main' ? removePrefixFromFiles(files) : files - }, - watch: [prefix] + server: false }) const anchors = [{ @@ -78,6 +64,18 @@ const anchors = [{ // Computed +const navigation = computed(() => { + const navigation = nav.value.find(link => link._path === prefix.value)?.children || [] + + return prefix.value === '/main' ? removePrefixFromNavigation(navigation) : navigation +}) + +const files = computed(() => { + const files = search.value.filter(file => file._path.startsWith(prefix.value)) + + return prefix.value === '/main' ? removePrefixFromFiles(files) : files +}) + const color = computed(() => colorMode.value === 'dark' ? '#18181b' : 'white') // Head diff --git a/docs/components/Header.vue b/docs/components/Header.vue index a3ddf53e..569a99c7 100644 --- a/docs/components/Header.vue +++ b/docs/components/Header.vue @@ -21,7 +21,6 @@ diff --git a/docs/nuxt.config.ts b/docs/nuxt.config.ts index 59d476c5..bff0d36b 100644 --- a/docs/nuxt.config.ts +++ b/docs/nuxt.config.ts @@ -57,12 +57,15 @@ export default defineNuxtConfig({ }, nitro: { prerender: { - routes: ['/getting-started', '/dev/getting-started'] + // Waiting for https://github.com/nuxt/nuxt/issues/22763 + concurrency: 1, + routes: [ + '/getting-started', + '/dev/getting-started', + '/api/search.json' + ] } }, - experimental: { - payloadExtraction: false - }, componentMeta: { globalsOnly: true, exclude: [resolve('./components'), resolve('@nuxthq/elements/components')], @@ -76,5 +79,16 @@ export default defineNuxtConfig({ typescript: { strict: false, includeWorkspace: true + }, + hooks: { + // TODO: Uncomment after Nuxt v3.7 upgrade + // Related to https://github.com/nuxt/nuxt/pull/22558 + // 'components:extend': (components) => { + // components.forEach((component) => { + // if (component.global) { + // component.global = 'sync' + // } + // }) + // } } }) diff --git a/docs/server/api/search.json.get.ts b/docs/server/api/search.json.get.ts new file mode 100644 index 00000000..f5ef8e4a --- /dev/null +++ b/docs/server/api/search.json.get.ts @@ -0,0 +1,5 @@ +import { serverQueryContent } from '#content/server' + +export default eventHandler(async (event) => { + return serverQueryContent(event).where({ _type: 'markdown', navigation: { $ne: false } }).find() +}) diff --git a/src/runtime/plugins/colors.ts b/src/runtime/plugins/colors.ts index cfe8a5d3..2925ac07 100644 --- a/src/runtime/plugins/colors.ts +++ b/src/runtime/plugins/colors.ts @@ -1,6 +1,6 @@ import { computed } from 'vue' import { hexToRgb } from '../utils' -import { defineNuxtPlugin, useHead, useAppConfig, useNuxtApp } from '#imports' +import { defineNuxtPlugin, useAppConfig } from '#imports' import colors from '#tailwind-config/theme/colors' export default defineNuxtPlugin((nuxtApp) => {