From e23c02700fdc4a8323af2392b97cc196dd491564 Mon Sep 17 00:00:00 2001 From: Minsu Lee Date: Mon, 22 Dec 2025 14:38:12 +0900 Subject: [PATCH 1/3] fix: ensure @nuxt/content layer compatibility and update deprecated imports - Add extendViteConfig import and configure optimizeDeps for @nuxt/content/slugify - Update deprecated @nuxt/content/nitro import to @nuxt/content/server - Remove duplicate nuxt-og-image module from modules array - Fix indentation in modules array for consistency This ensures the @pleaseai/docs layer works correctly when imported as a dependency in other Nuxt projects. --- packages/layer/nuxt.config.ts | 17 +++++++++++++---- .../layer/server/routes/raw/[...slug].md.get.ts | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/layer/nuxt.config.ts b/packages/layer/nuxt.config.ts index 38ac1bd..2faf324 100644 --- a/packages/layer/nuxt.config.ts +++ b/packages/layer/nuxt.config.ts @@ -1,4 +1,4 @@ -import { createResolver, useNuxt } from '@nuxt/kit' +import { createResolver, extendViteConfig, useNuxt } from '@nuxt/kit' import tailwindcss from '@tailwindcss/vite' const { resolve } = createResolver(import.meta.url) @@ -13,9 +13,18 @@ export default defineNuxtConfig({ '@nuxt/image', '@nuxt/icon', 'nuxt-og-image', - '@nuxtjs/robots', - 'nuxt-og-image', - 'nuxt-llms', + '@nuxtjs/robots', + 'nuxt-llms', + () => { + // Update @nuxt/content optimizeDeps options for layer compatibility + extendViteConfig((config) => { + config.optimizeDeps ||= {} + config.optimizeDeps.include ||= [] + config.optimizeDeps.include.push('@nuxt/content > slugify') + config.optimizeDeps.include = config.optimizeDeps.include + .map(id => id.replace(/^@nuxt\/content > /, 'docs-please > @nuxt/content > ')) + }) + }, ], devtools: { enabled: true }, css: [resolve('./app/assets/css/main.css')], diff --git a/packages/layer/server/routes/raw/[...slug].md.get.ts b/packages/layer/server/routes/raw/[...slug].md.get.ts index 15eaab4..7866f79 100644 --- a/packages/layer/server/routes/raw/[...slug].md.get.ts +++ b/packages/layer/server/routes/raw/[...slug].md.get.ts @@ -1,6 +1,6 @@ import { withLeadingSlash } from 'ufo' import { stringify } from 'minimark/stringify' -import { queryCollection } from '@nuxt/content/nitro' +import { queryCollection } from '@nuxt/content/server' import type { Collections } from '@nuxt/content' export default eventHandler(async (event) => { From 0de73425d2dbc1b2b919add2e60e70249b133a0a Mon Sep 17 00:00:00 2001 From: Minsu Lee Date: Mon, 22 Dec 2025 14:42:10 +0900 Subject: [PATCH 2/3] chore: apply AI code review suggestion for optimizeDeps --- packages/layer/nuxt.config.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/layer/nuxt.config.ts b/packages/layer/nuxt.config.ts index 2faf324..4728a75 100644 --- a/packages/layer/nuxt.config.ts +++ b/packages/layer/nuxt.config.ts @@ -20,9 +20,11 @@ export default defineNuxtConfig({ extendViteConfig((config) => { config.optimizeDeps ||= {} config.optimizeDeps.include ||= [] - config.optimizeDeps.include.push('@nuxt/content > slugify') - config.optimizeDeps.include = config.optimizeDeps.include - .map(id => id.replace(/^@nuxt\/content > /, 'docs-please > @nuxt/content > ')) + const includes = new Set(config.optimizeDeps.include) + includes.add('@nuxt/content > slugify') + config.optimizeDeps.include = Array.from(includes).map(id => + id.startsWith('@nuxt/content > ') ? `docs-please > ${id}` : id, + ) }) }, ], From f1e77702e08a42b5225d689657a31bae7698274b Mon Sep 17 00:00:00 2001 From: Minsu Lee Date: Mon, 22 Dec 2025 17:57:45 +0900 Subject: [PATCH 3/3] fix: revert @nuxt/content import to /nitro for layer compatibility - Changed import from '@nuxt/content/server' to '@nuxt/content/nitro' in raw route handler - Matches Docus pattern for proper layer compatibility - Adds experimental.asyncContext flag to nuxt.config.ts - Updates compatibilityDate to 2025-07-22 - Applies ESLint formatting fixes (double quotes to single quotes) in UI components - Fixes indentation in apps/docs/nuxt.config.ts --- apps/docs/nuxt.config.ts | 16 ++++++------ .../app/components/content/ProseTable.vue | 5 +++- .../app/components/ui/command/Command.vue | 22 ++++++++-------- .../components/ui/command/CommandDialog.vue | 6 ++--- .../components/ui/command/CommandEmpty.vue | 22 +++++++++------- .../components/ui/command/CommandGroup.vue | 21 ++++++++------- .../components/ui/command/CommandInput.vue | 21 ++++++++------- .../app/components/ui/command/CommandItem.vue | 16 ++++++------ .../app/components/ui/command/CommandList.vue | 17 +++++++----- .../ui/command/CommandSeparator.vue | 12 ++++----- .../components/ui/command/CommandShortcut.vue | 4 +-- .../layer/app/components/ui/command/index.ts | 26 +++++++++---------- .../layer/app/components/ui/dialog/Dialog.vue | 4 +-- .../app/components/ui/dialog/DialogClose.vue | 4 +-- .../components/ui/dialog/DialogContent.vue | 16 ++++++------ .../ui/dialog/DialogDescription.vue | 12 ++++----- .../app/components/ui/dialog/DialogFooter.vue | 4 +-- .../app/components/ui/dialog/DialogHeader.vue | 4 +-- .../components/ui/dialog/DialogOverlay.vue | 12 ++++----- .../ui/dialog/DialogScrollContent.vue | 14 +++++----- .../app/components/ui/dialog/DialogTitle.vue | 12 ++++----- .../components/ui/dialog/DialogTrigger.vue | 4 +-- .../layer/app/components/ui/dialog/index.ts | 20 +++++++------- packages/layer/app/components/ui/kbd/Kbd.vue | 4 +-- .../layer/app/components/ui/kbd/KbdGroup.vue | 4 +-- packages/layer/app/components/ui/kbd/index.ts | 4 +-- packages/layer/nuxt.config.ts | 5 +++- .../server/routes/raw/[...slug].md.get.ts | 2 +- 28 files changed, 166 insertions(+), 147 deletions(-) diff --git a/apps/docs/nuxt.config.ts b/apps/docs/nuxt.config.ts index 16d619f..db4cef9 100644 --- a/apps/docs/nuxt.config.ts +++ b/apps/docs/nuxt.config.ts @@ -23,13 +23,13 @@ export default defineNuxtConfig({ nodeCompat: true, }, }, - llms: { - domain: 'https://docs-please.pages.dev', - title: 'Docs Please', - description: 'Documentation for Docs Please', - full: { - title: 'Docs Please', - description: 'Documentation for Docs Please', - }, + llms: { + domain: 'https://docs-please.pages.dev', + title: 'Docs Please', + description: 'Documentation for Docs Please', + full: { + title: 'Docs Please', + description: 'Documentation for Docs Please', }, + }, }) diff --git a/packages/layer/app/components/content/ProseTable.vue b/packages/layer/app/components/content/ProseTable.vue index b0c2dc5..1891adf 100644 --- a/packages/layer/app/components/content/ProseTable.vue +++ b/packages/layer/app/components/content/ProseTable.vue @@ -12,7 +12,10 @@ const props = defineProps<{