docus 5.6.1 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/app.vue +13 -1
- package/app/assets/icons/LICENSE +14 -0
- package/app/assets/icons/ai.svg +1 -0
- package/app/components/LanguageSelect.vue +1 -4
- package/app/components/OgImage/OgImageDocs.vue +2 -4
- package/app/components/OgImage/OgImageLanding.vue +36 -13
- package/app/components/app/AppFooterRight.vue +32 -14
- package/app/components/app/AppHeader.vue +10 -0
- package/app/components/app/AppHeaderBottom.vue +20 -0
- package/app/components/app/AppHeaderBottomRight.vue +3 -0
- package/app/components/docs/DocsAsideLeftBody.vue +2 -4
- package/app/components/docs/DocsAsideLeftTop.vue +18 -1
- package/app/components/docs/DocsAsideMobileBar.vue +88 -0
- package/app/components/docs/DocsAsideRight.vue +33 -0
- package/app/components/docs/DocsAsideRightBottom.vue +1 -1
- package/app/composables/useDocusI18n.ts +21 -5
- package/app/composables/useLogoAssets.ts +1 -1
- package/app/composables/useSubNavigation.ts +55 -0
- package/app/pages/[[lang]]/[...slug].vue +4 -13
- package/i18n/locales/ar.json +1 -0
- package/i18n/locales/be.json +1 -0
- package/i18n/locales/bg.json +1 -0
- package/i18n/locales/bn.json +1 -0
- package/i18n/locales/ca.json +1 -0
- package/i18n/locales/ckb.json +1 -0
- package/i18n/locales/cs.json +1 -0
- package/i18n/locales/da.json +1 -0
- package/i18n/locales/de.json +1 -0
- package/i18n/locales/el.json +1 -0
- package/i18n/locales/en.json +1 -0
- package/i18n/locales/es.json +1 -0
- package/i18n/locales/et.json +1 -0
- package/i18n/locales/fi.json +1 -0
- package/i18n/locales/fr.json +1 -0
- package/i18n/locales/he.json +1 -0
- package/i18n/locales/hi.json +1 -0
- package/i18n/locales/hy.json +1 -0
- package/i18n/locales/id.json +1 -0
- package/i18n/locales/it.json +1 -0
- package/i18n/locales/ja.json +1 -0
- package/i18n/locales/kk.json +1 -0
- package/i18n/locales/km.json +1 -0
- package/i18n/locales/ko.json +1 -0
- package/i18n/locales/ky.json +1 -0
- package/i18n/locales/lb.json +1 -0
- package/i18n/locales/ms.json +1 -0
- package/i18n/locales/nb.json +1 -0
- package/i18n/locales/nl.json +1 -0
- package/i18n/locales/pl.json +1 -0
- package/i18n/locales/pt-BR.json +1 -0
- package/i18n/locales/ro.json +1 -0
- package/i18n/locales/ru.json +1 -0
- package/i18n/locales/si.json +1 -0
- package/i18n/locales/sl.json +1 -0
- package/i18n/locales/sv.json +1 -0
- package/i18n/locales/tr.json +1 -0
- package/i18n/locales/uk.json +1 -0
- package/i18n/locales/ur.json +1 -0
- package/i18n/locales/vi.json +1 -0
- package/i18n/locales/zh-CN.json +1 -0
- package/modules/assistant/runtime/components/AssistantChat.vue +2 -2
- package/modules/assistant/runtime/components/AssistantPanel.vue +1 -1
- package/modules/assistant/runtime/components/AssistantPreStream.vue +1 -1
- package/modules/assistant/runtime/composables/useAssistant.ts +7 -3
- package/modules/assistant/runtime/server/api/search.ts +3 -2
- package/modules/config.ts +18 -6
- package/modules/markdown-rewrite.ts +7 -3
- package/modules/routing.ts +4 -1
- package/nuxt.config.ts +24 -2
- package/nuxt.schema.ts +15 -1
- package/package.json +13 -14
- package/server/mcp/tools/get-page.ts +2 -4
- package/server/mcp/tools/list-pages.ts +2 -1
- package/server/routes/sitemap.xml.ts +3 -3
package/i18n/locales/de.json
CHANGED
package/i18n/locales/el.json
CHANGED
package/i18n/locales/en.json
CHANGED
package/i18n/locales/es.json
CHANGED
package/i18n/locales/et.json
CHANGED
package/i18n/locales/fi.json
CHANGED
package/i18n/locales/fr.json
CHANGED
package/i18n/locales/he.json
CHANGED
package/i18n/locales/hi.json
CHANGED
package/i18n/locales/hy.json
CHANGED
package/i18n/locales/id.json
CHANGED
package/i18n/locales/it.json
CHANGED
package/i18n/locales/ja.json
CHANGED
package/i18n/locales/kk.json
CHANGED
package/i18n/locales/km.json
CHANGED
package/i18n/locales/ko.json
CHANGED
package/i18n/locales/ky.json
CHANGED
package/i18n/locales/lb.json
CHANGED
package/i18n/locales/ms.json
CHANGED
package/i18n/locales/nb.json
CHANGED
package/i18n/locales/nl.json
CHANGED
package/i18n/locales/pl.json
CHANGED
package/i18n/locales/pt-BR.json
CHANGED
package/i18n/locales/ro.json
CHANGED
package/i18n/locales/ru.json
CHANGED
package/i18n/locales/si.json
CHANGED
package/i18n/locales/sl.json
CHANGED
package/i18n/locales/sv.json
CHANGED
package/i18n/locales/tr.json
CHANGED
package/i18n/locales/uk.json
CHANGED
package/i18n/locales/ur.json
CHANGED
package/i18n/locales/vi.json
CHANGED
package/i18n/locales/zh-CN.json
CHANGED
|
@@ -6,15 +6,15 @@ const { toggle } = useAssistant()
|
|
|
6
6
|
const { t } = useDocusI18n()
|
|
7
7
|
|
|
8
8
|
const tooltipText = computed(() => t('assistant.tooltip'))
|
|
9
|
-
const triggerIcon = computed(() => appConfig.assistant?.icons?.trigger || 'i-
|
|
9
|
+
const triggerIcon = computed(() => appConfig.assistant?.icons?.trigger || 'i-custom-ai')
|
|
10
10
|
</script>
|
|
11
11
|
|
|
12
12
|
<template>
|
|
13
13
|
<UTooltip :text="tooltipText">
|
|
14
14
|
<UButton
|
|
15
15
|
:icon="triggerIcon"
|
|
16
|
+
color="neutral"
|
|
16
17
|
variant="ghost"
|
|
17
|
-
class="rounded-full"
|
|
18
18
|
@click="toggle"
|
|
19
19
|
/>
|
|
20
20
|
</UTooltip>
|
|
@@ -25,7 +25,7 @@ const displayPlaceholder = computed(() => t('assistant.placeholder'))
|
|
|
25
25
|
const chat = new Chat({
|
|
26
26
|
messages: messages.value,
|
|
27
27
|
transport: new DefaultChatTransport({
|
|
28
|
-
api: config.public.assistant.apiPath,
|
|
28
|
+
api: (config.app?.baseURL.replace(/\/$/, '') || '') + config.public.assistant.apiPath,
|
|
29
29
|
}),
|
|
30
30
|
onError: (error: Error) => {
|
|
31
31
|
const message = (() => {
|
|
@@ -3,7 +3,7 @@ import { ShikiCachedRenderer } from 'shiki-stream/vue'
|
|
|
3
3
|
import { useColorMode } from '#imports'
|
|
4
4
|
import { useHighlighter } from '../composables/useHighlighter'
|
|
5
5
|
|
|
6
|
-
const colorMode = useColorMode()
|
|
6
|
+
const colorMode = useColorMode() as { value: string, forced?: boolean }
|
|
7
7
|
const highlighter = await useHighlighter()
|
|
8
8
|
const props = defineProps<{
|
|
9
9
|
code: string
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { UIMessage } from 'ai'
|
|
2
|
+
import { useAppConfig, useRuntimeConfig, useState } from '#imports'
|
|
2
3
|
import { useMediaQuery } from '@vueuse/core'
|
|
4
|
+
import { computed } from 'vue'
|
|
3
5
|
import type { FaqCategory, FaqQuestions, LocalizedFaqQuestions } from '../types'
|
|
4
6
|
|
|
5
7
|
function normalizeFaqQuestions(questions: FaqQuestions): FaqCategory[] {
|
|
@@ -23,7 +25,10 @@ const PANEL_WIDTH_EXPANDED = 520
|
|
|
23
25
|
export function useAssistant() {
|
|
24
26
|
const config = useRuntimeConfig()
|
|
25
27
|
const appConfig = useAppConfig()
|
|
26
|
-
const
|
|
28
|
+
const assistantRuntimeConfig = config.public.assistant as { enabled?: boolean } | undefined
|
|
29
|
+
const assistantConfig = appConfig.assistant as { faqQuestions?: FaqQuestions | LocalizedFaqQuestions } | undefined
|
|
30
|
+
const docusRuntimeConfig = appConfig.docus as { locale?: string } | undefined
|
|
31
|
+
const isEnabled = computed(() => assistantRuntimeConfig?.enabled ?? false)
|
|
27
32
|
|
|
28
33
|
const isOpen = useState('assistant-open', () => false)
|
|
29
34
|
const isExpanded = useState('assistant-expanded', () => false)
|
|
@@ -35,14 +40,13 @@ export function useAssistant() {
|
|
|
35
40
|
const shouldPushContent = computed(() => !isMobile.value && isOpen.value)
|
|
36
41
|
|
|
37
42
|
const faqQuestions = computed<FaqCategory[]>(() => {
|
|
38
|
-
const assistantConfig = appConfig.assistant
|
|
39
43
|
const faqConfig = assistantConfig?.faqQuestions
|
|
40
44
|
if (!faqConfig) return []
|
|
41
45
|
|
|
42
46
|
// Check if it's a localized object (has locale keys like 'en', 'fr')
|
|
43
47
|
if (!Array.isArray(faqConfig)) {
|
|
44
48
|
const localizedConfig = faqConfig as LocalizedFaqQuestions
|
|
45
|
-
const currentLocale =
|
|
49
|
+
const currentLocale = docusRuntimeConfig?.locale || 'en'
|
|
46
50
|
const defaultLocale = config.public.i18n?.defaultLocale || 'en'
|
|
47
51
|
|
|
48
52
|
// Try current locale, then default locale, then first available
|
|
@@ -60,11 +60,12 @@ export default defineEventHandler(async (event) => {
|
|
|
60
60
|
|
|
61
61
|
const mcpServer = config.assistant.mcpServer
|
|
62
62
|
const isExternalUrl = mcpServer.startsWith('http://') || mcpServer.startsWith('https://')
|
|
63
|
+
const baseURL = config.app?.baseURL?.replace(/\/$/, '') || ''
|
|
63
64
|
const mcpUrl = isExternalUrl
|
|
64
65
|
? mcpServer
|
|
65
66
|
: import.meta.dev
|
|
66
|
-
? `http://localhost:3000${mcpServer}`
|
|
67
|
-
: `${getRequestURL(event).origin}${mcpServer}`
|
|
67
|
+
? `http://localhost:3000${baseURL}${mcpServer}`
|
|
68
|
+
: `${getRequestURL(event).origin}${baseURL}${mcpServer}`
|
|
68
69
|
|
|
69
70
|
const httpClient = await createMCPClient({
|
|
70
71
|
transport: { type: 'http', url: mcpUrl },
|
package/modules/config.ts
CHANGED
|
@@ -7,6 +7,13 @@ import { getGitBranch, getGitEnv, getLocalGitInfo } from '../utils/git'
|
|
|
7
7
|
|
|
8
8
|
const log = logger.withTag('Docus')
|
|
9
9
|
|
|
10
|
+
type I18nLocale = string | { code: string, name?: string }
|
|
11
|
+
type DocusI18nOptions = { locales?: I18nLocale[], strategy?: string }
|
|
12
|
+
type RegisterModuleOptions = {
|
|
13
|
+
langDir: string
|
|
14
|
+
locales: Array<{ code: string, name: string, file: string }>
|
|
15
|
+
}
|
|
16
|
+
|
|
10
17
|
export default defineNuxtModule({
|
|
11
18
|
meta: {
|
|
12
19
|
name: 'config',
|
|
@@ -54,11 +61,14 @@ export default defineNuxtModule({
|
|
|
54
61
|
/*
|
|
55
62
|
** I18N
|
|
56
63
|
*/
|
|
57
|
-
|
|
64
|
+
const typedNuxtOptions = nuxt.options as typeof nuxt.options & { i18n?: DocusI18nOptions }
|
|
65
|
+
const i18nOptions = typedNuxtOptions.i18n
|
|
66
|
+
|
|
67
|
+
if (i18nOptions?.locales) {
|
|
58
68
|
const { resolve } = createResolver(import.meta.url)
|
|
59
69
|
|
|
60
70
|
// Filter locales to only include existing ones
|
|
61
|
-
const filteredLocales =
|
|
71
|
+
const filteredLocales = i18nOptions.locales.filter((locale: I18nLocale) => {
|
|
62
72
|
const localeCode = typeof locale === 'string' ? locale : locale.code
|
|
63
73
|
|
|
64
74
|
// Check for JSON locale file
|
|
@@ -81,8 +91,8 @@ export default defineNuxtModule({
|
|
|
81
91
|
})
|
|
82
92
|
|
|
83
93
|
// Override strategy to prefix
|
|
84
|
-
|
|
85
|
-
...
|
|
94
|
+
typedNuxtOptions.i18n = {
|
|
95
|
+
...i18nOptions,
|
|
86
96
|
strategy: 'prefix',
|
|
87
97
|
}
|
|
88
98
|
|
|
@@ -91,10 +101,12 @@ export default defineNuxtModule({
|
|
|
91
101
|
filteredLocales,
|
|
92
102
|
}
|
|
93
103
|
|
|
94
|
-
nuxt.hook(
|
|
104
|
+
const registerI18nModule = nuxt.hook as unknown as (name: string, callback: (register: (options: RegisterModuleOptions) => void) => void) => void
|
|
105
|
+
|
|
106
|
+
registerI18nModule('i18n:registerModule', (register) => {
|
|
95
107
|
const langDir = resolve('../i18n/locales')
|
|
96
108
|
|
|
97
|
-
const locales = filteredLocales
|
|
109
|
+
const locales = filteredLocales.map((locale: I18nLocale) => {
|
|
98
110
|
return typeof locale === 'string'
|
|
99
111
|
? {
|
|
100
112
|
code: locale,
|
|
@@ -4,6 +4,9 @@ import { readFile, writeFile } from 'node:fs/promises'
|
|
|
4
4
|
|
|
5
5
|
const log = logger.withTag('Docus')
|
|
6
6
|
|
|
7
|
+
type I18nLocale = string | { code: string }
|
|
8
|
+
type DocusI18nOptions = { locales?: I18nLocale[] }
|
|
9
|
+
|
|
7
10
|
export default defineNuxtModule({
|
|
8
11
|
meta: {
|
|
9
12
|
name: 'markdown-rewrite',
|
|
@@ -44,13 +47,14 @@ export default defineNuxtModule({
|
|
|
44
47
|
]
|
|
45
48
|
|
|
46
49
|
// Check if i18n is enabled
|
|
47
|
-
const
|
|
50
|
+
const i18nOptions = (nuxt.options as typeof nuxt.options & { i18n?: DocusI18nOptions }).i18n
|
|
51
|
+
const isI18nEnabled = !!i18nOptions?.locales
|
|
48
52
|
let localeCodes: string[] = []
|
|
49
53
|
|
|
50
54
|
if (isI18nEnabled) {
|
|
51
55
|
// Get locale codes
|
|
52
|
-
const locales =
|
|
53
|
-
localeCodes = locales.map((locale) => {
|
|
56
|
+
const locales = i18nOptions?.locales || []
|
|
57
|
+
localeCodes = locales.map((locale: I18nLocale) => {
|
|
54
58
|
return typeof locale === 'string' ? locale : locale.code
|
|
55
59
|
})
|
|
56
60
|
|
package/modules/routing.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { defineNuxtModule, extendPages, createResolver } from '@nuxt/kit'
|
|
2
2
|
import { landingPageExists } from '../utils/pages'
|
|
3
3
|
|
|
4
|
+
type DocusI18nOptions = { locales?: Array<string | { code: string }> }
|
|
5
|
+
|
|
4
6
|
export default defineNuxtModule({
|
|
5
7
|
meta: {
|
|
6
8
|
name: 'routing',
|
|
@@ -8,7 +10,8 @@ export default defineNuxtModule({
|
|
|
8
10
|
async setup(_options, nuxt) {
|
|
9
11
|
const { resolve } = createResolver(import.meta.url)
|
|
10
12
|
|
|
11
|
-
const
|
|
13
|
+
const i18nOptions = (nuxt.options as typeof nuxt.options & { i18n?: DocusI18nOptions }).i18n
|
|
14
|
+
const isI18nEnabled = !!i18nOptions?.locales
|
|
12
15
|
|
|
13
16
|
// Ensure useDocusI18n is available in the app
|
|
14
17
|
nuxt.hook('imports:extend', (imports) => {
|
package/nuxt.config.ts
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
|
+
import { join } from 'node:path'
|
|
1
2
|
import { extendViteConfig, createResolver, useNuxt } from '@nuxt/kit'
|
|
2
3
|
|
|
3
4
|
const { resolve } = createResolver(import.meta.url)
|
|
4
5
|
|
|
6
|
+
type DocusI18nOptions = { locales?: Array<string | { code: string }> }
|
|
7
|
+
|
|
5
8
|
export default defineNuxtConfig({
|
|
6
9
|
modules: [
|
|
7
10
|
resolve('./modules/config'),
|
|
8
11
|
resolve('./modules/routing'),
|
|
9
12
|
resolve('./modules/markdown-rewrite'),
|
|
10
13
|
resolve('./modules/css'),
|
|
14
|
+
() => {
|
|
15
|
+
const nuxt = useNuxt()
|
|
16
|
+
nuxt.options.icon ||= {}
|
|
17
|
+
nuxt.options.icon.customCollections ||= []
|
|
18
|
+
nuxt.options.icon.customCollections.push({
|
|
19
|
+
prefix: 'custom',
|
|
20
|
+
dir: join(nuxt.options.srcDir, 'assets/icons'),
|
|
21
|
+
})
|
|
22
|
+
},
|
|
11
23
|
'@nuxt/ui',
|
|
12
24
|
'@nuxt/content',
|
|
13
25
|
'@nuxt/image',
|
|
@@ -77,14 +89,14 @@ export default defineNuxtConfig({
|
|
|
77
89
|
'nitro:config'(nitroConfig) {
|
|
78
90
|
const nuxt = useNuxt()
|
|
79
91
|
|
|
80
|
-
const i18nOptions = nuxt.options.i18n
|
|
92
|
+
const i18nOptions = (nuxt.options as typeof nuxt.options & { i18n?: DocusI18nOptions }).i18n
|
|
81
93
|
|
|
82
94
|
const routes: string[] = []
|
|
83
95
|
if (!i18nOptions) {
|
|
84
96
|
routes.push('/')
|
|
85
97
|
}
|
|
86
98
|
else {
|
|
87
|
-
routes.push(...(i18nOptions.locales?.map(locale => typeof locale === 'string' ? `/${locale}` : `/${locale.code}`) || []))
|
|
99
|
+
routes.push(...(i18nOptions.locales?.map((locale: string | { code: string }) => typeof locale === 'string' ? `/${locale}` : `/${locale.code}`) || []))
|
|
88
100
|
}
|
|
89
101
|
|
|
90
102
|
nitroConfig.prerender = nitroConfig.prerender || {}
|
|
@@ -94,6 +106,16 @@ export default defineNuxtConfig({
|
|
|
94
106
|
},
|
|
95
107
|
},
|
|
96
108
|
icon: {
|
|
109
|
+
customCollections: [
|
|
110
|
+
{
|
|
111
|
+
prefix: 'custom',
|
|
112
|
+
dir: resolve('./app/assets/icons'),
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
clientBundle: {
|
|
116
|
+
scan: true,
|
|
117
|
+
includeCustomCollections: true,
|
|
118
|
+
},
|
|
97
119
|
provider: 'iconify',
|
|
98
120
|
},
|
|
99
121
|
robots: {
|
package/nuxt.schema.ts
CHANGED
|
@@ -193,6 +193,20 @@ export default defineNuxtSchema({
|
|
|
193
193
|
}),
|
|
194
194
|
},
|
|
195
195
|
}),
|
|
196
|
+
navigation: group({
|
|
197
|
+
title: 'Navigation',
|
|
198
|
+
description: 'Navigation configuration.',
|
|
199
|
+
icon: 'i-lucide-navigation',
|
|
200
|
+
fields: {
|
|
201
|
+
sub: field({
|
|
202
|
+
type: 'string',
|
|
203
|
+
title: 'Sub Navigation',
|
|
204
|
+
description: 'Enable sub-navigation for multi-section docs. Use "header" for a secondary tab bar below the header, or "aside" for section anchors at the top of the sidebar.',
|
|
205
|
+
icon: 'i-lucide-layout-panel-left',
|
|
206
|
+
default: '',
|
|
207
|
+
}),
|
|
208
|
+
},
|
|
209
|
+
}),
|
|
196
210
|
socials: field({
|
|
197
211
|
type: 'object',
|
|
198
212
|
title: 'Social Networks',
|
|
@@ -266,7 +280,7 @@ export default defineNuxtSchema({
|
|
|
266
280
|
assistant: group({
|
|
267
281
|
title: 'Assistant',
|
|
268
282
|
description: 'Assistant configuration.',
|
|
269
|
-
icon: 'i-
|
|
283
|
+
icon: 'i-custom-ai',
|
|
270
284
|
fields: {
|
|
271
285
|
floatingInput: field({
|
|
272
286
|
type: 'boolean',
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "docus",
|
|
3
3
|
"description": "Nuxt layer for Docus documentation theme",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.8.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./nuxt.config.ts",
|
|
7
7
|
"repository": {
|
|
@@ -22,26 +22,25 @@
|
|
|
22
22
|
"README.md"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@ai-sdk/gateway": "^3.0.
|
|
26
|
-
"@ai-sdk/mcp": "^1.0.
|
|
27
|
-
"@ai-sdk/vue": "3.0.
|
|
28
|
-
"@iconify-json/lucide": "^1.2.
|
|
29
|
-
"@iconify-json/simple-icons": "^1.2.
|
|
30
|
-
"@iconify-json/vscode-icons": "^1.2.
|
|
31
|
-
"@nuxt/content": "^3.
|
|
25
|
+
"@ai-sdk/gateway": "^3.0.66",
|
|
26
|
+
"@ai-sdk/mcp": "^1.0.25",
|
|
27
|
+
"@ai-sdk/vue": "3.0.116",
|
|
28
|
+
"@iconify-json/lucide": "^1.2.96",
|
|
29
|
+
"@iconify-json/simple-icons": "^1.2.73",
|
|
30
|
+
"@iconify-json/vscode-icons": "^1.2.45",
|
|
31
|
+
"@nuxt/content": "^3.12.0",
|
|
32
32
|
"@nuxt/image": "^2.0.0",
|
|
33
33
|
"@nuxt/kit": "^4.3.1",
|
|
34
|
-
"@nuxt/ui": "^4.
|
|
34
|
+
"@nuxt/ui": "^4.5.1",
|
|
35
35
|
"@nuxtjs/i18n": "^10.2.3",
|
|
36
36
|
"@nuxtjs/mcp-toolkit": "^0.7.0",
|
|
37
|
-
"@nuxtjs/mdc": "^0.20.
|
|
38
|
-
"@nuxtjs/robots": "^5.7.
|
|
37
|
+
"@nuxtjs/mdc": "^0.20.2",
|
|
38
|
+
"@nuxtjs/robots": "^5.7.1",
|
|
39
39
|
"@vueuse/core": "^14.2.1",
|
|
40
|
-
"ai": "6.0.
|
|
40
|
+
"ai": "6.0.116",
|
|
41
41
|
"defu": "^6.1.4",
|
|
42
42
|
"exsolve": "^1.0.8",
|
|
43
43
|
"git-url-parse": "^16.1.0",
|
|
44
|
-
"minimark": "^1.0.0",
|
|
45
44
|
"motion-v": "^1.10.3",
|
|
46
45
|
"nuxt-llms": "^0.2.0",
|
|
47
46
|
"nuxt-og-image": "^5.1.13",
|
|
@@ -52,7 +51,7 @@
|
|
|
52
51
|
"@shikijs/langs": "^3.22.0",
|
|
53
52
|
"@shikijs/themes": "^3.22.0",
|
|
54
53
|
"shiki-stream": "^0.1.4",
|
|
55
|
-
"tailwindcss": "^4.1
|
|
54
|
+
"tailwindcss": "^4.2.1",
|
|
56
55
|
"ufo": "^1.6.3",
|
|
57
56
|
"zod": "^4.3.6",
|
|
58
57
|
"zod-to-json-schema": "^3.25.1"
|