diff --git a/.gitignore b/.gitignore index 142f876..32c5e88 100644 --- a/.gitignore +++ b/.gitignore @@ -43,6 +43,9 @@ next-env.d.ts # content collections .content-collections +# fumadocs +.source + # OpenNext build output .open-next diff --git a/content-collections.ts b/content-collections.ts index 4ffb939..8cb15cf 100644 --- a/content-collections.ts +++ b/content-collections.ts @@ -1,11 +1,7 @@ import path from 'path'; import { DEFAULT_LOCALE, LOCALES } from '@/i18n/routing'; import { defineCollection, defineConfig } from '@content-collections/core'; -import { - createDocSchema, - createMetaSchema, - transformMDX, -} from '@fumadocs/content-collections/configuration'; +import { transformMDX } from '@fumadocs/content-collections/configuration'; /** * 1. Content Collections documentation @@ -16,25 +12,25 @@ import { * 2. Use Content Collections for Fumadocs * https://fumadocs.dev/docs/headless/content-collections */ -const docs = defineCollection({ - name: 'docs', - directory: 'content/docs', - include: '**/*.mdx', - schema: (z) => ({ - ...createDocSchema(z), - preview: z.string().optional(), - index: z.boolean().default(false), - }), - transform: transformMDX, -}); +// const docs = defineCollection({ +// name: 'docs', +// directory: 'content/docs', +// include: '**/*.mdx', +// schema: (z) => ({ +// ...createDocSchema(z), +// preview: z.string().optional(), +// index: z.boolean().default(false), +// }), +// transform: transformMDX, +// }); -const metas = defineCollection({ - name: 'meta', - directory: 'content/docs', - include: '**/meta**.json', - parser: 'json', - schema: createMetaSchema, -}); +// const metas = defineCollection({ +// name: 'meta', +// directory: 'content/docs', +// include: '**/meta**.json', +// parser: 'json', +// schema: createMetaSchema, +// }); /** * Blog Author collection @@ -324,5 +320,5 @@ function extractLocaleAndBase(fileName: string): { } export default defineConfig({ - collections: [docs, metas, authors, categories, posts, pages, releases], + collections: [authors, categories, posts, pages, releases], }); diff --git a/next.config.ts b/next.config.ts index 5637d8b..9ccd53d 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,4 +1,4 @@ -import { withContentCollections } from '@content-collections/next'; +import { createMDX } from 'fumadocs-mdx/next'; import type { NextConfig } from 'next'; import createNextIntlPlugin from 'next-intl/plugin'; @@ -69,8 +69,9 @@ const nextConfig: NextConfig = { const withNextIntl = createNextIntlPlugin(); /** - * withContentCollections must be the outermost plugin - * - * https://www.content-collections.dev/docs/quickstart/next + * https://fumadocs.dev/docs/ui/manual-installation + * https://fumadocs.dev/docs/mdx/plugin */ -export default withContentCollections(withNextIntl(nextConfig)); +const withMDX = createMDX(); + +export default withMDX(withNextIntl(nextConfig)); diff --git a/package.json b/package.json index ee110e6..8d59153 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "dev": "concurrently \"content-collections watch\" \"next dev\"", "build": "content-collections build && next build", "start": "next start", + "postinstall": "fumadocs-mdx", "lint": "biome check --write .", "lint:fix": "biome check --fix --unsafe .", "format": "biome format --write .", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4820e5..2ff766a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@ai-sdk/openai': specifier: ^1.1.13 - version: 1.1.13(zod@3.24.2) + version: 1.1.13(zod@3.25.64) '@aws-sdk/client-s3': specifier: ^3.758.0 version: 3.758.0 @@ -25,13 +25,13 @@ importers: version: 1.1.18 '@content-collections/core': specifier: ^0.8.0 - version: 0.8.0(typescript@5.7.3) + version: 0.8.0(typescript@5.8.3) '@content-collections/mdx': specifier: ^0.2.0 - version: 0.2.0(@content-collections/core@0.8.0(typescript@5.7.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 0.2.0(@content-collections/core@0.8.0(typescript@5.8.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@content-collections/next': specifier: ^0.2.4 - version: 0.2.4(@content-collections/core@0.8.0(typescript@5.7.3))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + version: 0.2.4(@content-collections/core@0.8.0(typescript@5.8.3))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) '@dnd-kit/core': specifier: ^6.3.1 version: 6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -46,7 +46,7 @@ importers: version: 3.2.2(react@19.0.0) '@fumadocs/content-collections': specifier: ^1.1.8 - version: 1.1.8(@content-collections/core@0.8.0(typescript@5.7.3))(@content-collections/mdx@0.2.0(@content-collections/core@0.8.0(typescript@5.7.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(fumadocs-core@15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + version: 1.1.8(@content-collections/core@0.8.0(typescript@5.8.3))(@content-collections/mdx@0.2.0(@content-collections/core@0.8.0(typescript@5.8.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(fumadocs-core@15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) '@hookform/resolvers': specifier: ^4.1.0 version: 4.1.0(react-hook-form@7.54.2(react@19.0.0)) @@ -178,7 +178,7 @@ importers: version: 1.9.0(react@19.0.0) ai: specifier: ^4.1.45 - version: 4.1.45(react@19.0.0)(zod@3.24.2) + version: 4.1.45(react@19.0.0)(zod@3.25.64) better-auth: specifier: ^1.1.19 version: 1.1.19 @@ -220,13 +220,13 @@ importers: version: 12.4.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) fumadocs-core: specifier: ^15.1.2 - version: 15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) fumadocs-mdx: specifier: ^11.6.8 - version: 11.6.8(acorn@8.14.0)(fumadocs-core@15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) + version: 11.6.8(acorn@8.14.0)(fumadocs-core@15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) fumadocs-ui: specifier: ^15.1.2 - version: 15.1.2(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(fumadocs-core@15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14) + version: 15.5.2(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14) input-otp: specifier: ^1.4.2 version: 1.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -244,13 +244,13 @@ importers: version: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next-intl: specifier: ^4.0.0 - version: 4.0.0(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 4.0.0(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(typescript@5.8.3) next-plausible: specifier: ^3.12.4 version: 3.12.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next-safe-action: specifier: ^7.10.4 - version: 7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@3.24.2) + version: 7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@3.25.64) next-themes: specifier: ^0.4.4 version: 0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -295,7 +295,7 @@ importers: version: 7.1.0 rehype-pretty-code: specifier: ^0.14.0 - version: 0.14.0(shiki@2.4.2) + version: 0.14.0(shiki@2.5.0) rehype-slug: specifier: ^6.0.0 version: 6.0.0 @@ -313,7 +313,7 @@ importers: version: 4.4.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) shiki: specifier: ^2.4.2 - version: 2.4.2 + version: 2.5.0 sonner: specifier: ^2.0.0 version: 2.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -346,7 +346,7 @@ importers: version: 1.1.2(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) zod: specifier: ^3.24.2 - version: 3.24.2 + version: 3.25.64 zustand: specifier: ^5.0.3 version: 5.0.3(@types/react@19.0.9)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)) @@ -356,7 +356,7 @@ importers: version: 1.9.4 '@content-collections/cli': specifier: ^0.1.6 - version: 0.1.6(@content-collections/core@0.8.0(typescript@5.7.3)) + version: 0.1.6(@content-collections/core@0.8.0(typescript@5.8.3)) '@opennextjs/cloudflare': specifier: ^1.2.1 version: 1.2.1(wrangler@4.14.1) @@ -368,7 +368,7 @@ importers: version: 2.0.13 '@types/node': specifier: ^20 - version: 20.17.19 + version: 20.19.0 '@types/pg': specifier: ^8.11.11 version: 8.11.11 @@ -398,7 +398,7 @@ importers: version: 4.19.3 typescript: specifier: ^5 - version: 5.7.3 + version: 5.8.3 wrangler: specifier: ^4.14.1 version: 4.14.1 @@ -2405,6 +2405,9 @@ packages: '@formatjs/intl-localematcher@0.6.0': resolution: {integrity: sha512-4rB4g+3hESy1bHSBG3tDFaMY2CH67iT7yne1e+0CLTsGLDcmoEWWpJjjpWVaYgYfYuohIRuo0E+N536gd2ZHZA==} + '@formatjs/intl-localematcher@0.6.1': + resolution: {integrity: sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==} + '@fumadocs/content-collections@1.1.8': resolution: {integrity: sha512-eHXyMw9fnwtn/YkCDbcPTGSqMcydayIK4AHUNbrC4bzMKy+Am2E0bbF9KAadxd6M/99wWtaPBQEECoL3Rt/RNQ==} peerDependencies: @@ -2757,6 +2760,10 @@ packages: resolution: {integrity: sha512-7tTuIdkzgRscJ7sGHVsoK9GtXSpwbfrj3WYnuSu/SepXHhshYiQaOeXc/aeLh4MfgIre6tEs/caIop8wrhMi3g==} engines: {node: '>= 16.0.0'} + '@orama/orama@3.1.7': + resolution: {integrity: sha512-6yB0117ZjsgNevZw3LP+bkrZa9mU/POPVaXgzMPOBbBc35w2P3R+1vMMhEfC06kYCpd5bf0jodBaTkYQW5TVeQ==} + engines: {node: '>= 20.0.0'} + '@orama/tokenizers@3.1.4': resolution: {integrity: sha512-OKyw/uKDZqlS4Vwwyp2l+d1ISGtBt3qMORbTp3jyfeGjXllTLJrH/erzlVYKWdNp5bPrWGVrQbtgWgE5nLV1Ng==} engines: {node: '>= 18.0.0'} @@ -4308,47 +4315,47 @@ packages: '@selderee/plugin-htmlparser2@0.11.0': resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==} - '@shikijs/core@2.4.2': - resolution: {integrity: sha512-V0kXYB/70xA3CO+b2Pz9kcSThaOUfObOEkGeHsKSFqV6rultaWPfeyZPpBlKHMUXO9Bt1ZGINDCctN90pQvnTg==} + '@shikijs/core@2.5.0': + resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==} - '@shikijs/core@3.2.1': - resolution: {integrity: sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==} + '@shikijs/core@3.6.0': + resolution: {integrity: sha512-9By7Xb3olEX0o6UeJyPLI1PE1scC4d3wcVepvtv2xbuN9/IThYN4Wcwh24rcFeASzPam11MCq8yQpwwzCgSBRw==} - '@shikijs/engine-javascript@2.4.2': - resolution: {integrity: sha512-WRg63Lfta+5RJ0y0/ns1e1NqSxo+jSQclMf9kBHvtchLhR/x3R/E3PSNFiCM+t7oo+d9/VCCp1kURqsSVTHWJg==} + '@shikijs/engine-javascript@2.5.0': + resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==} - '@shikijs/engine-javascript@3.2.1': - resolution: {integrity: sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==} + '@shikijs/engine-javascript@3.6.0': + resolution: {integrity: sha512-7YnLhZG/TU05IHMG14QaLvTW/9WiK8SEYafceccHUSXs2Qr5vJibUwsDfXDLmRi0zHdzsxrGKpSX6hnqe0k8nA==} - '@shikijs/engine-oniguruma@2.4.2': - resolution: {integrity: sha512-YmvW7XcvT2f2pf1r1IvKd48fFYcsZRMMISRr2nY1fE2uOF4xcm+84R7+yg4jNAblrFcXU9tDrkllJKH2uD3mBQ==} + '@shikijs/engine-oniguruma@2.5.0': + resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==} - '@shikijs/engine-oniguruma@3.2.1': - resolution: {integrity: sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==} + '@shikijs/engine-oniguruma@3.6.0': + resolution: {integrity: sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==} - '@shikijs/langs@2.4.2': - resolution: {integrity: sha512-USwSIDIxalwON4FSE2IFMGmAvM250RNdWjOf79zj2JjV2fsNJWn0vvEE9gh1WtvPp2l5BXXhdybFYA6ek7ogFQ==} + '@shikijs/langs@2.5.0': + resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==} - '@shikijs/langs@3.2.1': - resolution: {integrity: sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==} + '@shikijs/langs@3.6.0': + resolution: {integrity: sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==} - '@shikijs/rehype@3.2.1': - resolution: {integrity: sha512-wj4TXI1PQ3TNPyXudUzKfdFIMneTxFym3HKKfWRzbOSAS8P4mECR+ttdUPhYU1dxrXrsatWxTJezOcEjiA0z8g==} + '@shikijs/rehype@3.6.0': + resolution: {integrity: sha512-r0Rr2hvXXqLl5DJ1Lx7RImU81XsK2bjThaym/lujl2A0r7SId0u1s+bcWYfFKb+7mCLH7MXF+jdzCtdWGOcYCQ==} - '@shikijs/themes@2.4.2': - resolution: {integrity: sha512-W6uxyv91JWI6udgBpsSRCdmIp8WPxOq5Ys9Nj9royB+Or8sYmvnEBHLw6f+dZB9DIlFgvRPw5VnlwUx5ofKMKA==} + '@shikijs/themes@2.5.0': + resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==} - '@shikijs/themes@3.2.1': - resolution: {integrity: sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==} + '@shikijs/themes@3.6.0': + resolution: {integrity: sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==} - '@shikijs/transformers@3.2.1': - resolution: {integrity: sha512-oIT40p8LOPV/6XLnUrVPeRtJtbu0Mpl+BjGFuMXw870eX9zTSQlidg7CsksFDVyUiSAOC/CH1RQm+ldZp0/6eQ==} + '@shikijs/transformers@3.6.0': + resolution: {integrity: sha512-PYkU54lYV0RCaUG8n2FNTF+YWiU3uPhcjLGq2x/C8lIrUX9GVnRb3bK+R5xtdFHbuctntATKm7ondp/H/dux9Q==} - '@shikijs/types@2.4.2': - resolution: {integrity: sha512-e28aFDPwVgK8H2nPrEA5CexLa5yumBvb5aF6nN4SlmqaBFOuGQdxX/Cfh8rwRFALepJtlj0P3wvJ4oL+ndxgSA==} + '@shikijs/types@2.5.0': + resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==} - '@shikijs/types@3.2.1': - resolution: {integrity: sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==} + '@shikijs/types@3.6.0': + resolution: {integrity: sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -5047,14 +5054,8 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@20.17.19': - resolution: {integrity: sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==} - - '@types/node@20.17.23': - resolution: {integrity: sha512-8PCGZ1ZJbEZuYNTMqywO+Sj4vSKjSjT6Ua+6RFOYlEvIvKQABPtrNkoVSLSKDb4obYcMhspVKmsw8Cm10NFRUg==} - - '@types/node@20.17.32': - resolution: {integrity: sha512-zeMXFn8zQ+UkjK4ws0RiOC9EWByyW1CcVmLe+2rQocXRsGEDxUCwPEIVgpsGcLHS/P8JkT0oa3839BRABS0oPw==} + '@types/node@20.19.0': + resolution: {integrity: sha512-hfrc+1tud1xcdVTABC2JiomZJEklMcXYNTVtZLAeqTVWD+qL5jkHKT+1lOtqDdGxt+mB53DTtiz673vfjU8D1Q==} '@types/pg@8.11.11': resolution: {integrity: sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==} @@ -5982,17 +5983,20 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - fumadocs-core@15.1.2: - resolution: {integrity: sha512-KbDZ2euvyXQ0M+ch6p4ZlrQzw6MqRBp7Z/2LbQC8fW+FYJUI9zKy/ThS04p2tTiz+6DN1Pi4nIuoOn7F2iCpbQ==} + fumadocs-core@15.5.2: + resolution: {integrity: sha512-lp3OIc7zp78LCYlo5nymaa1vtP3Z79cpmVtSMlmIIHMyCAstgfHX5gWmfueSZ28D1HOTdLt+KJNstMNuc7oxsw==} peerDependencies: '@oramacloud/client': 1.x.x || 2.x.x - algoliasearch: 4.24.0 + '@types/react': '*' + algoliasearch: 5.x.x next: 14.x.x || 15.x.x react: 18.x.x || 19.x.x react-dom: 18.x.x || 19.x.x peerDependenciesMeta: '@oramacloud/client': optional: true + '@types/react': + optional: true algoliasearch: optional: true next: @@ -6013,15 +6017,19 @@ packages: '@fumadocs/mdx-remote': optional: true - fumadocs-ui@15.1.2: - resolution: {integrity: sha512-Jel9zhg85BfMfzDW2YX0lE0qeqnQmWj4s9QpbdKnPnrqeq2jRJJnpJExk3kaeWGG5KousEWG5ihsz3sFQvYCYw==} + fumadocs-ui@15.5.2: + resolution: {integrity: sha512-oOIRbGOdLu9OxlNb1TtRmFM27Dk5Kn5wM786ngkMP78S4k4R09fPkwdt4pA4luQlYxM7XpyqjeBouOjiEo26fg==} peerDependencies: - fumadocs-core: 15.1.2 + '@types/react': '*' next: 14.x.x || 15.x.x react: 18.x.x || 19.x.x react-dom: 18.x.x || 19.x.x tailwindcss: ^3.4.14 || ^4.0.0 peerDependenciesMeta: + '@types/react': + optional: true + next: + optional: true tailwindcss: optional: true @@ -6130,9 +6138,6 @@ packages: hast-util-to-estree@3.1.3: resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - hast-util-to-html@9.0.4: - resolution: {integrity: sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==} - hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} @@ -6180,8 +6185,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - image-size@2.0.1: - resolution: {integrity: sha512-NI6NK/2zchlZopsQrcVIS7jxA0/rtIy74B+/rx5s7rKQyFebmQjZVhzxXgRZJROk+WhhOq+S6sUaODxp0L5hfg==} + image-size@2.0.2: + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} engines: {node: '>=16.x'} hasBin: true @@ -6902,14 +6907,14 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - oniguruma-parser@0.5.4: - resolution: {integrity: sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==} + oniguruma-parser@0.12.1: + resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@3.1.0: - resolution: {integrity: sha512-BJ3Jy22YlgejHSO7Fvmz1kKazlaPmRSUH+4adTDUS/dKQ4wLxI+gALZ8updbaux7/m7fIlpgOZ5fp/Inq5jUAw==} + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} - oniguruma-to-es@4.1.0: - resolution: {integrity: sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==} + oniguruma-to-es@4.3.3: + resolution: {integrity: sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==} ora@5.4.1: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} @@ -7212,6 +7217,16 @@ packages: '@types/react': optional: true + react-remove-scroll@2.7.1: + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + react-resizable-panels@2.1.7: resolution: {integrity: sha512-JtT6gI+nURzhMYQYsx8DKkx6bSoOGFp7A3CwMrOb8y5jFHFyqwo9m68UhmXRw57fRVJksFn1TSlm3ywEQ9vMgA==} peerDependencies: @@ -7341,6 +7356,9 @@ packages: remark-rehype@11.1.1: resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} + remark-rehype@11.1.2: + resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} + remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} @@ -7438,11 +7456,11 @@ packages: resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} engines: {node: '>= 0.4'} - shiki@2.4.2: - resolution: {integrity: sha512-kPOa6plKRlylb23/qOtO+iBI3HYO84IgMix9oc7oet9WcsnuGHCPK4s/v7635nkUSmv+F6s6xmaDreNs5z6v+w==} + shiki@2.5.0: + resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==} - shiki@3.2.1: - resolution: {integrity: sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==} + shiki@3.6.0: + resolution: {integrity: sha512-tKn/Y0MGBTffQoklaATXmTqDU02zx8NYBGQ+F6gy87/YjKbizcLd+Cybh/0ZtOBX9r1NEnAy/GTRDKtOsc1L9w==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -7618,6 +7636,9 @@ packages: tailwind-merge@3.0.2: resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} + tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + tailwindcss-animate@1.0.7: resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} peerDependencies: @@ -7714,8 +7735,8 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true @@ -7725,8 +7746,8 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -7980,9 +8001,6 @@ packages: zod@3.22.3: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} - zod@3.25.64: resolution: {integrity: sha512-hbP9FpSZf7pkS7hRVUrOjhwKJNyampPgtXKc3AN6DsWtoHsg2Sb4SQaS4Tcay380zSwd2VPo9G9180emBACp5g==} @@ -8009,42 +8027,42 @@ packages: snapshots: - '@ai-sdk/openai@1.1.13(zod@3.24.2)': + '@ai-sdk/openai@1.1.13(zod@3.25.64)': dependencies: '@ai-sdk/provider': 1.0.8 - '@ai-sdk/provider-utils': 2.1.9(zod@3.24.2) - zod: 3.24.2 + '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) + zod: 3.25.64 - '@ai-sdk/provider-utils@2.1.9(zod@3.24.2)': + '@ai-sdk/provider-utils@2.1.9(zod@3.25.64)': dependencies: '@ai-sdk/provider': 1.0.8 eventsource-parser: 3.0.0 nanoid: 3.3.8 secure-json-parse: 2.7.0 optionalDependencies: - zod: 3.24.2 + zod: 3.25.64 '@ai-sdk/provider@1.0.8': dependencies: json-schema: 0.4.0 - '@ai-sdk/react@1.1.17(react@19.0.0)(zod@3.24.2)': + '@ai-sdk/react@1.1.17(react@19.0.0)(zod@3.25.64)': dependencies: - '@ai-sdk/provider-utils': 2.1.9(zod@3.24.2) - '@ai-sdk/ui-utils': 1.1.15(zod@3.24.2) + '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) + '@ai-sdk/ui-utils': 1.1.15(zod@3.25.64) swr: 2.3.2(react@19.0.0) throttleit: 2.1.0 optionalDependencies: react: 19.0.0 - zod: 3.24.2 + zod: 3.25.64 - '@ai-sdk/ui-utils@1.1.15(zod@3.24.2)': + '@ai-sdk/ui-utils@1.1.15(zod@3.25.64)': dependencies: '@ai-sdk/provider': 1.0.8 - '@ai-sdk/provider-utils': 2.1.9(zod@3.24.2) - zod-to-json-schema: 3.24.2(zod@3.24.2) + '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) + zod-to-json-schema: 3.24.2(zod@3.25.64) optionalDependencies: - zod: 3.24.2 + zod: 3.25.64 '@alloc/quick-lru@5.2.0': {} @@ -9561,16 +9579,16 @@ snapshots: '@cloudflare/workerd-windows-64@1.20250428.0': optional: true - '@content-collections/cli@0.1.6(@content-collections/core@0.8.0(typescript@5.7.3))': + '@content-collections/cli@0.1.6(@content-collections/core@0.8.0(typescript@5.8.3))': dependencies: '@clerc/core': 0.44.0 '@clerc/plugin-completions': 0.44.0(@clerc/core@0.44.0) '@clerc/plugin-help': 0.44.0(@clerc/core@0.44.0) '@clerc/plugin-version': 0.44.0(@clerc/core@0.44.0) - '@content-collections/core': 0.8.0(typescript@5.7.3) - '@content-collections/integrations': 0.2.1(@content-collections/core@0.8.0(typescript@5.7.3)) + '@content-collections/core': 0.8.0(typescript@5.8.3) + '@content-collections/integrations': 0.2.1(@content-collections/core@0.8.0(typescript@5.8.3)) - '@content-collections/core@0.8.0(typescript@5.7.3)': + '@content-collections/core@0.8.0(typescript@5.8.3)': dependencies: '@parcel/watcher': 2.5.1 camelcase: 8.0.0 @@ -9581,17 +9599,17 @@ snapshots: pluralize: 8.0.0 serialize-javascript: 6.0.2 tinyglobby: 0.2.10 - typescript: 5.7.3 + typescript: 5.8.3 yaml: 2.7.0 - zod: 3.24.2 + zod: 3.25.64 - '@content-collections/integrations@0.2.1(@content-collections/core@0.8.0(typescript@5.7.3))': + '@content-collections/integrations@0.2.1(@content-collections/core@0.8.0(typescript@5.8.3))': dependencies: - '@content-collections/core': 0.8.0(typescript@5.7.3) + '@content-collections/core': 0.8.0(typescript@5.8.3) - '@content-collections/mdx@0.2.0(@content-collections/core@0.8.0(typescript@5.7.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@content-collections/mdx@0.2.0(@content-collections/core@0.8.0(typescript@5.8.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@content-collections/core': 0.8.0(typescript@5.7.3) + '@content-collections/core': 0.8.0(typescript@5.8.3) esbuild: 0.21.5 mdx-bundler: 10.1.0(acorn@8.14.0)(esbuild@0.21.5) react: 19.0.0 @@ -9601,10 +9619,10 @@ snapshots: - acorn - supports-color - '@content-collections/next@0.2.4(@content-collections/core@0.8.0(typescript@5.7.3))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': + '@content-collections/next@0.2.4(@content-collections/core@0.8.0(typescript@5.8.3))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': dependencies: - '@content-collections/core': 0.8.0(typescript@5.7.3) - '@content-collections/integrations': 0.2.1(@content-collections/core@0.8.0(typescript@5.7.3)) + '@content-collections/core': 0.8.0(typescript@5.8.3) + '@content-collections/integrations': 0.2.1(@content-collections/core@0.8.0(typescript@5.8.3)) next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@cspotcode/source-map-support@0.8.1': @@ -10327,11 +10345,15 @@ snapshots: dependencies: tslib: 2.8.1 - '@fumadocs/content-collections@1.1.8(@content-collections/core@0.8.0(typescript@5.7.3))(@content-collections/mdx@0.2.0(@content-collections/core@0.8.0(typescript@5.7.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(fumadocs-core@15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': + '@formatjs/intl-localematcher@0.6.1': dependencies: - '@content-collections/core': 0.8.0(typescript@5.7.3) - '@content-collections/mdx': 0.2.0(@content-collections/core@0.8.0(typescript@5.7.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - fumadocs-core: 15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + tslib: 2.8.1 + + '@fumadocs/content-collections@1.1.8(@content-collections/core@0.8.0(typescript@5.8.3))(@content-collections/mdx@0.2.0(@content-collections/core@0.8.0(typescript@5.8.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(fumadocs-core@15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': + dependencies: + '@content-collections/core': 0.8.0(typescript@5.8.3) + '@content-collections/mdx': 0.2.0(@content-collections/core@0.8.0(typescript@5.8.3))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + fumadocs-core: 15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@hexagon/base64@1.1.28': {} @@ -10637,6 +10659,8 @@ snapshots: '@orama/orama@3.1.4': {} + '@orama/orama@3.1.7': {} + '@orama/tokenizers@3.1.4': dependencies: '@orama/orama': 3.1.4 @@ -12272,80 +12296,80 @@ snapshots: domhandler: 5.0.3 selderee: 0.11.0 - '@shikijs/core@2.4.2': + '@shikijs/core@2.5.0': dependencies: - '@shikijs/engine-javascript': 2.4.2 - '@shikijs/engine-oniguruma': 2.4.2 - '@shikijs/types': 2.4.2 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.4 - - '@shikijs/core@3.2.1': - dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@2.4.2': + '@shikijs/core@3.6.0': dependencies: - '@shikijs/types': 2.4.2 + '@shikijs/types': 3.6.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 3.1.0 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.2.1': + '@shikijs/engine-javascript@2.5.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.1.0 + oniguruma-to-es: 3.1.1 - '@shikijs/engine-oniguruma@2.4.2': + '@shikijs/engine-javascript@3.6.0': dependencies: - '@shikijs/types': 2.4.2 + '@shikijs/types': 3.6.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.3 + + '@shikijs/engine-oniguruma@2.5.0': + dependencies: + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.2.1': + '@shikijs/engine-oniguruma@3.6.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.6.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@2.4.2': + '@shikijs/langs@2.5.0': dependencies: - '@shikijs/types': 2.4.2 + '@shikijs/types': 2.5.0 - '@shikijs/langs@3.2.1': + '@shikijs/langs@3.6.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.6.0 - '@shikijs/rehype@3.2.1': + '@shikijs/rehype@3.6.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.6.0 '@types/hast': 3.0.4 hast-util-to-string: 3.0.1 - shiki: 3.2.1 + shiki: 3.6.0 unified: 11.0.5 unist-util-visit: 5.0.0 - '@shikijs/themes@2.4.2': + '@shikijs/themes@2.5.0': dependencies: - '@shikijs/types': 2.4.2 + '@shikijs/types': 2.5.0 - '@shikijs/themes@3.2.1': + '@shikijs/themes@3.6.0': dependencies: - '@shikijs/types': 3.2.1 + '@shikijs/types': 3.6.0 - '@shikijs/transformers@3.2.1': + '@shikijs/transformers@3.6.0': dependencies: - '@shikijs/core': 3.2.1 - '@shikijs/types': 3.2.1 + '@shikijs/core': 3.6.0 + '@shikijs/types': 3.6.0 - '@shikijs/types@2.4.2': + '@shikijs/types@2.5.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.2.1': + '@shikijs/types@3.6.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -13290,7 +13314,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 20.17.23 + '@types/node': 20.19.0 '@types/d3-array@3.2.1': {} @@ -13340,28 +13364,19 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@20.17.19': + '@types/node@20.19.0': dependencies: - undici-types: 6.19.8 - - '@types/node@20.17.23': - dependencies: - undici-types: 6.19.8 - - '@types/node@20.17.32': - dependencies: - undici-types: 6.19.8 - optional: true + undici-types: 6.21.0 '@types/pg@8.11.11': dependencies: - '@types/node': 20.17.19 + '@types/node': 20.19.0 pg-protocol: 1.7.1 pg-types: 4.0.2 '@types/pg@8.11.6': dependencies: - '@types/node': 20.17.32 + '@types/node': 20.19.0 pg-protocol: 1.10.0 pg-types: 4.0.2 optional: true @@ -13425,17 +13440,17 @@ snapshots: acorn@8.14.0: {} - ai@4.1.45(react@19.0.0)(zod@3.24.2): + ai@4.1.45(react@19.0.0)(zod@3.25.64): dependencies: '@ai-sdk/provider': 1.0.8 - '@ai-sdk/provider-utils': 2.1.9(zod@3.24.2) - '@ai-sdk/react': 1.1.17(react@19.0.0)(zod@3.24.2) - '@ai-sdk/ui-utils': 1.1.15(zod@3.24.2) + '@ai-sdk/provider-utils': 2.1.9(zod@3.25.64) + '@ai-sdk/react': 1.1.17(react@19.0.0)(zod@3.25.64) + '@ai-sdk/ui-utils': 1.1.15(zod@3.25.64) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 optionalDependencies: react: 19.0.0 - zod: 3.24.2 + zod: 3.25.64 ansi-colors@4.1.3: {} @@ -13494,14 +13509,14 @@ snapshots: jose: 5.10.0 kysely: 0.27.5 nanostores: 0.11.4 - zod: 3.24.2 + zod: 3.25.64 better-call@0.3.3: dependencies: '@better-fetch/fetch': 1.1.18 rou3: 0.5.1 uncrypto: 0.1.3 - zod: 3.24.2 + zod: 3.25.64 bindings@1.5.0: dependencies: @@ -13892,7 +13907,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.17 - '@types/node': 20.17.23 + '@types/node': 20.19.0 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14345,39 +14360,40 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + fumadocs-core@15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@formatjs/intl-localematcher': 0.6.0 - '@orama/orama': 3.1.4 - '@shikijs/rehype': 3.2.1 - '@shikijs/transformers': 3.2.1 + '@formatjs/intl-localematcher': 0.6.1 + '@orama/orama': 3.1.7 + '@shikijs/rehype': 3.6.0 + '@shikijs/transformers': 3.6.0 github-slugger: 2.0.0 hast-util-to-estree: 3.1.3 hast-util-to-jsx-runtime: 2.3.6 - image-size: 2.0.1 + image-size: 2.0.2 negotiator: 1.0.0 - react-remove-scroll: 2.6.3(@types/react@19.0.9)(react@19.0.0) + react-remove-scroll: 2.7.1(@types/react@19.0.9)(react@19.0.0) remark: 15.0.1 remark-gfm: 4.0.1 + remark-rehype: 11.1.2 scroll-into-view-if-needed: 3.1.0 - shiki: 3.2.1 + shiki: 3.6.0 unist-util-visit: 5.0.0 optionalDependencies: + '@types/react': 19.0.9 next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) transitivePeerDependencies: - - '@types/react' - supports-color - fumadocs-mdx@11.6.8(acorn@8.14.0)(fumadocs-core@15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)): + fumadocs-mdx@11.6.8(acorn@8.14.0)(fumadocs-core@15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)): dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.14.0) '@standard-schema/spec': 1.0.0 chokidar: 4.0.3 esbuild: 0.25.5 estree-util-value-to-estree: 3.4.0 - fumadocs-core: 15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + fumadocs-core: 15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) js-yaml: 4.1.0 lru-cache: 11.1.0 next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -14390,33 +14406,37 @@ snapshots: - acorn - supports-color - fumadocs-ui@15.1.2(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(fumadocs-core@15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14): + fumadocs-ui@15.5.2(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(tailwindcss@4.0.14): dependencies: - '@radix-ui/react-accordion': 1.2.3(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-collapsible': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-dialog': 1.1.6(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.9)(react@19.0.0) - '@radix-ui/react-navigation-menu': 1.2.5(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-popover': 1.1.6(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-scroll-area': 1.2.3(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@radix-ui/react-slot': 1.1.2(@types/react@19.0.9)(react@19.0.0) - '@radix-ui/react-tabs': 1.1.3(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-accordion': 1.2.11(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-dialog': 1.1.14(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.0.9)(react@19.0.0) + '@radix-ui/react-navigation-menu': 1.2.13(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-popover': 1.1.14(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-scroll-area': 1.2.9(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.0.9)(react@19.0.0) + '@radix-ui/react-tabs': 1.1.12(@types/react-dom@19.0.3(@types/react@19.0.9))(@types/react@19.0.9)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) class-variance-authority: 0.7.1 - fumadocs-core: 15.1.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + fumadocs-core: 15.5.2(@types/react@19.0.9)(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) lodash.merge: 4.6.2 - lucide-react: 0.483.0(react@19.0.0) - next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next-themes: 0.4.6(react-dom@19.0.0(react@19.0.0))(react@19.0.0) postcss-selector-parser: 7.1.0 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-medium-image-zoom: 5.2.14(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - tailwind-merge: 3.0.2 + react-remove-scroll: 2.7.1(@types/react@19.0.9)(react@19.0.0) + tailwind-merge: 3.3.1 optionalDependencies: + '@types/react': 19.0.9 + next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) tailwindcss: 4.0.14 transitivePeerDependencies: - - '@types/react' + - '@oramacloud/client' - '@types/react-dom' + - algoliasearch + - supports-color function-bind@1.1.2: {} @@ -14582,20 +14602,6 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-html@9.0.4: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.4 @@ -14701,7 +14707,7 @@ snapshots: ignore@5.3.2: {} - image-size@2.0.1: {} + image-size@2.0.2: {} inherits@2.0.4: {} @@ -15483,7 +15489,7 @@ snapshots: negotiator@1.0.0: {} - next-intl@4.0.0(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(typescript@5.7.3): + next-intl@4.0.0(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(typescript@5.8.3): dependencies: '@formatjs/intl-localematcher': 0.5.10 negotiator: 1.0.0 @@ -15491,7 +15497,7 @@ snapshots: react: 19.0.0 use-intl: 4.0.0(react@19.0.0) optionalDependencies: - typescript: 5.7.3 + typescript: 5.8.3 next-plausible@3.12.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: @@ -15499,13 +15505,13 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - next-safe-action@7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@3.24.2): + next-safe-action@7.10.4(next@15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(zod@3.25.64): dependencies: next: 15.2.1(@babel/core@7.24.5)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) optionalDependencies: - zod: 3.24.2 + zod: 3.25.64 next-themes@0.4.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: @@ -15603,18 +15609,17 @@ snapshots: dependencies: mimic-fn: 2.1.0 - oniguruma-parser@0.5.4: {} + oniguruma-parser@0.12.1: {} - oniguruma-to-es@3.1.0: + oniguruma-to-es@3.1.1: dependencies: emoji-regex-xs: 1.0.0 regex: 6.0.1 regex-recursion: 6.0.2 - oniguruma-to-es@4.1.0: + oniguruma-to-es@4.3.3: dependencies: - emoji-regex-xs: 1.0.0 - oniguruma-parser: 0.5.4 + oniguruma-parser: 0.12.1 regex: 6.0.1 regex-recursion: 6.0.2 @@ -15984,6 +15989,17 @@ snapshots: optionalDependencies: '@types/react': 19.0.9 + react-remove-scroll@2.7.1(@types/react@19.0.9)(react@19.0.0): + dependencies: + react: 19.0.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.0.9)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.9)(react@19.0.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.0.9)(react@19.0.0) + use-sidecar: 1.1.3(@types/react@19.0.9)(react@19.0.0) + optionalDependencies: + '@types/react': 19.0.9 + react-resizable-panels@2.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 @@ -16112,13 +16128,13 @@ snapshots: hast-util-from-html: 2.0.3 unified: 11.0.5 - rehype-pretty-code@0.14.0(shiki@2.4.2): + rehype-pretty-code@0.14.0(shiki@2.5.0): dependencies: '@types/hast': 3.0.4 hast-util-to-string: 3.0.1 parse-numeric-range: 1.3.0 rehype-parse: 9.0.1 - shiki: 2.4.2 + shiki: 2.5.0 unified: 11.0.5 unist-util-visit: 5.0.0 @@ -16197,6 +16213,14 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 + remark-rehype@11.1.2: + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + mdast-util-to-hast: 13.2.0 + unified: 11.0.5 + vfile: 6.0.3 + remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.4 @@ -16342,25 +16366,25 @@ snapshots: shell-quote@1.8.2: {} - shiki@2.4.2: + shiki@2.5.0: dependencies: - '@shikijs/core': 2.4.2 - '@shikijs/engine-javascript': 2.4.2 - '@shikijs/engine-oniguruma': 2.4.2 - '@shikijs/langs': 2.4.2 - '@shikijs/themes': 2.4.2 - '@shikijs/types': 2.4.2 + '@shikijs/core': 2.5.0 + '@shikijs/engine-javascript': 2.5.0 + '@shikijs/engine-oniguruma': 2.5.0 + '@shikijs/langs': 2.5.0 + '@shikijs/themes': 2.5.0 + '@shikijs/types': 2.5.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - shiki@3.2.1: + shiki@3.6.0: dependencies: - '@shikijs/core': 3.2.1 - '@shikijs/engine-javascript': 3.2.1 - '@shikijs/engine-oniguruma': 3.2.1 - '@shikijs/langs': 3.2.1 - '@shikijs/themes': 3.2.1 - '@shikijs/types': 3.2.1 + '@shikijs/core': 3.6.0 + '@shikijs/engine-javascript': 3.6.0 + '@shikijs/engine-oniguruma': 3.6.0 + '@shikijs/langs': 3.6.0 + '@shikijs/themes': 3.6.0 + '@shikijs/types': 3.6.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -16509,7 +16533,7 @@ snapshots: stripe@17.6.0: dependencies: - '@types/node': 20.17.19 + '@types/node': 20.19.0 qs: 6.14.0 strnum@1.1.2: {} @@ -16551,6 +16575,8 @@ snapshots: tailwind-merge@3.0.2: {} + tailwind-merge@3.3.1: {} + tailwindcss-animate@1.0.7(tailwindcss@4.0.14): dependencies: tailwindcss: 4.0.14 @@ -16634,13 +16660,13 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.1 - typescript@5.7.3: {} + typescript@5.8.3: {} ufo@1.6.1: {} uncrypto@0.1.3: {} - undici-types@6.19.8: {} + undici-types@6.21.0: {} undici@5.29.0: dependencies: @@ -16912,14 +16938,12 @@ snapshots: zalgo-promise@1.0.48: {} - zod-to-json-schema@3.24.2(zod@3.24.2): + zod-to-json-schema@3.24.2(zod@3.25.64): dependencies: - zod: 3.24.2 + zod: 3.25.64 zod@3.22.3: {} - zod@3.24.2: {} - zod@3.25.64: {} zustand@5.0.3(@types/react@19.0.9)(react@19.0.0)(use-sync-external-store@1.5.0(react@19.0.0)): diff --git a/source.config.ts b/source.config.ts new file mode 100644 index 0000000..a4d50da --- /dev/null +++ b/source.config.ts @@ -0,0 +1,27 @@ +import { defineDocs, frontmatterSchema, metaSchema } from 'fumadocs-mdx/config'; +import { z } from 'zod'; + +const customDocsSchema = frontmatterSchema.extend({ + preview: z.string().optional(), + index: z.boolean().default(false), +}); + +const customMetaSchema = metaSchema.extend({ + description: z.string().optional(), +}); + +/** + * frontmatterSchema.extend causes error: Type instantiation is excessively deep, + * so we define the schema manually. + * + * https://fumadocs.dev/docs/mdx/collections#schema-1 + */ +export const docs = defineDocs({ + dir: 'content/docs', + docs: { + schema: customDocsSchema, + }, + meta: { + schema: customMetaSchema, + }, +}); diff --git a/src/app/[locale]/docs/[[...slug]]/page.tsx b/src/app/[locale]/docs/[[...slug]]/page.tsx index 8258d61..b1971a6 100644 --- a/src/app/[locale]/docs/[[...slug]]/page.tsx +++ b/src/app/[locale]/docs/[[...slug]]/page.tsx @@ -1,5 +1,5 @@ +import { getMDXComponents } from '@/components/custom/mdx-components'; import * as Preview from '@/components/docs'; -import { CustomMDXContent } from '@/components/shared/custom-mdx-content'; import { HoverCard, HoverCardContent, @@ -87,6 +87,8 @@ export default async function DocPage({ params }: DocPageProps) { const preview = page.data.preview; + const MDX = page.data.body; + return ( : null} {/* MDX Content */} - { const found = source.getPageByHref(href ?? '', { dir: page.file.dirname, @@ -133,7 +134,7 @@ export default async function DocPage({ params }: DocPageProps) { ); }, - }} + })} /> diff --git a/src/components/custom/mdx-components.tsx b/src/components/custom/mdx-components.tsx new file mode 100644 index 0000000..c7c2400 --- /dev/null +++ b/src/components/custom/mdx-components.tsx @@ -0,0 +1,45 @@ +import { ImageWrapper } from '@/components/docs/image-wrapper'; +import { Wrapper } from '@/components/docs/wrapper'; +import { YoutubeVideo } from '@/components/docs/youtube-video'; +import { Accordion, Accordions } from 'fumadocs-ui/components/accordion'; +import { Callout } from 'fumadocs-ui/components/callout'; +import { File, Files, Folder } from 'fumadocs-ui/components/files'; +import { Step, Steps } from 'fumadocs-ui/components/steps'; +import { Tab, Tabs } from 'fumadocs-ui/components/tabs'; +import { TypeTable } from 'fumadocs-ui/components/type-table'; +import defaultMdxComponents from 'fumadocs-ui/mdx'; +import * as LucideIcons from 'lucide-react'; +import type { MDXComponents } from 'mdx/types'; +import type { ComponentProps, FC } from 'react'; + +/** + * Enhanced MDX Content component that includes commonly used MDX components + * It can be used for blog posts, documentation, and custom pages + */ +export function getMDXComponents(components?: MDXComponents): MDXComponents { + // Start with default components + const baseComponents: Record = { + ...defaultMdxComponents, + ...LucideIcons, + // ...((await import('lucide-react')) as unknown as MDXComponents), + YoutubeVideo, + Tabs, + Tab, + TypeTable, + Accordion, + Accordions, + Steps, + Step, + Wrapper, + File, + Folder, + Files, + blockquote: Callout as unknown as FC>, + img: ImageWrapper, + }; + + return { + ...baseComponents, + ...components, + }; +} diff --git a/src/components/docs/dynamic-codeblock.tsx b/src/components/docs/dynamic-codeblock.tsx index b8d8405..0c216b8 100644 --- a/src/components/docs/dynamic-codeblock.tsx +++ b/src/components/docs/dynamic-codeblock.tsx @@ -28,7 +28,7 @@ export default function Example() { className="bg-transparent px-4 py-2 text-sm focus-visible:outline-none" /> - + ); } diff --git a/src/lib/docs/source.ts b/src/lib/docs/source.ts index 1e7a9d1..313ca51 100644 --- a/src/lib/docs/source.ts +++ b/src/lib/docs/source.ts @@ -1,12 +1,12 @@ -import { createMDXSource } from '@fumadocs/content-collections'; -import { allDocs, allMetas } from 'content-collections'; import { loader } from 'fumadocs-core/source'; import * as LucideIcons from 'lucide-react'; import { createElement } from 'react'; +import { docs } from '../../../.source'; import { docsI18nConfig } from './i18n'; /** * Turn a content source into a unified interface + * .source folder is generated by `fumadocs-mdx` * * https://fumadocs.dev/docs/headless/source-api * https://fumadocs.dev/docs/headless/content-collections @@ -14,7 +14,7 @@ import { docsI18nConfig } from './i18n'; export const source = loader({ baseUrl: '/docs', i18n: docsI18nConfig, - source: createMDXSource(allDocs, allMetas), + source: docs.toFumadocsSource(), icon(iconName) { if (!iconName) { return undefined;