create-fumadocs-app 16.2.13 → 16.2.15

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/dist/bin.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { i as templates, n as isCI } from "./constants-B3bccTnf.js";
3
- import { n as getPackageManager, r as managers, t as create } from "./src-CKqbbKgU.js";
4
- import { t as feature } from "./feature-CXjiy0TW.js";
2
+ import { i as templates, n as isCI } from "./constants-BAh0aByZ.js";
3
+ import { n as getPackageManager, r as managers, t as create } from "./src-D028hn2H.js";
4
+ import { t as feature } from "./feature-jzKd1o2p.js";
5
5
  import fs from "node:fs/promises";
6
6
  import path from "node:path";
7
7
  import { cancel, confirm, group, intro, isCancel, outro, select, spinner, text } from "@clack/prompts";
@@ -13,7 +13,7 @@ var __exportAll = (all, no_symbols) => {
13
13
  //#endregion
14
14
  //#region ../create-app-versions/package.json
15
15
  var dependencies$3 = {
16
- "@biomejs/biome": "^2.5.14",
16
+ "@biomejs/biome": "^2.5.15",
17
17
  "@mixedbread/sdk": "^0.78.0",
18
18
  "@orama/core": "^1.2.19",
19
19
  "algoliasearch": "^5.59.0",
@@ -21,10 +21,10 @@ var dependencies$3 = {
21
21
  "fumadocs-mdx": "workspace:*",
22
22
  "fumadocs-ui": "workspace:*",
23
23
  "meilisearch": "^0.62.0",
24
- "oxlint": "^1.83.0",
24
+ "oxlint": "^1.86.0",
25
25
  "react": "^19.3.0",
26
26
  "takumi-js": "^2.14.0",
27
- "typesense": "^3.0.6",
27
+ "typesense": "^3.1.0",
28
28
  "typesense-fumadocs-adapter": "^0.4.3"
29
29
  };
30
30
  //#endregion
@@ -53,7 +53,7 @@ var package_exports$2 = /* @__PURE__ */ __exportAll({
53
53
  version: () => version$2
54
54
  });
55
55
  var name$2 = "fumadocs-core";
56
- var version$2 = "16.15.18";
56
+ var version$2 = "16.16.1";
57
57
  var description$2 = "The React.js library for building a documentation website";
58
58
  var keywords$2 = ["Docs", "Fumadocs"];
59
59
  var homepage$2 = "https://fumadocs.dev";
@@ -166,40 +166,40 @@ var dependencies$2 = {
166
166
  "hast-util-to-estree": "^3.1.3",
167
167
  "hast-util-to-jsx-runtime": "^2.3.6",
168
168
  "mdast-util-mdx": "^3.0.0",
169
- "mdast-util-to-markdown": "^2.1.2",
169
+ "mdast-util-to-markdown": "^2.1.3",
170
170
  "npm-to-yarn": "3.2.0",
171
171
  "remark": "^15.0.1",
172
172
  "remark-gfm": "^4.0.1",
173
173
  "remark-rehype": "^11.1.2",
174
174
  "scroll-into-view-if-needed": "^3.1.0",
175
- "shiki": "^4.4.3",
175
+ "shiki": "^4.5.0",
176
176
  "tinyglobby": "^0.2.17",
177
177
  "unified": "^11.0.5",
178
178
  "unist-util-visit": "^5.1.0",
179
179
  "vfile": "^6.0.3",
180
180
  "yaml": "^2.9.1",
181
- "zbsearch": "^4.0.0"
181
+ "zbsearch": "^4.0.1"
182
182
  };
183
183
  var devDependencies$2 = {
184
184
  "@formatjs/intl-localematcher": "^0.9.0",
185
185
  "@mdx-js/mdx": "^3.1.1",
186
186
  "@mixedbread/sdk": "0.78.0",
187
- "@modelcontextprotocol/server": "2.0.0",
187
+ "@modelcontextprotocol/server": "2.2.0",
188
188
  "@orama/core": "^1.2.19",
189
189
  "@oramacloud/client": "^2.1.4",
190
- "@shikijs/transformers": "^4.4.3",
191
- "@tanstack/react-router": "1.170.38",
190
+ "@shikijs/transformers": "^4.5.0",
191
+ "@tanstack/react-router": "1.170.41",
192
192
  "@types/estree-jsx": "^1.0.5",
193
193
  "@types/hast": "^3.0.5",
194
194
  "@types/mdast": "^4.0.4",
195
- "@types/node": "26.6.1",
195
+ "@types/node": "26.6.4",
196
196
  "@types/react": "^19.3.0",
197
197
  "@types/react-dom": "^19.3.0",
198
198
  "algoliasearch": "5.59.0",
199
199
  "flexsearch": "^0.8.212",
200
- "lucide-react": "^1.47.0",
200
+ "lucide-react": "^1.50.0",
201
201
  "meilisearch": "0.62.0",
202
- "next": "16.3.5",
202
+ "next": "16.3.8",
203
203
  "path-to-regexp": "^8.4.2",
204
204
  "react-router": "^8.4.0",
205
205
  "rehype-raw": "^7.0.0",
@@ -208,7 +208,7 @@ var devDependencies$2 = {
208
208
  "tsconfig": "workspace:*",
209
209
  "tsdown": "0.23.0",
210
210
  "typescript": "^7.0.2",
211
- "waku": "1.0.0-rc.1",
211
+ "waku": "1.0.0-rc.2",
212
212
  "zod": "4.6.5"
213
213
  };
214
214
  var peerDependencies$2 = {
@@ -258,7 +258,7 @@ var peerDependenciesMeta$2 = {
258
258
  var inlinedDependencies$1 = {
259
259
  "@formatjs/fast-memoize": "3.1.7",
260
260
  "@formatjs/intl-localematcher": "0.9.0",
261
- "@shikijs/transformers": "4.4.3",
261
+ "@shikijs/transformers": "4.5.0",
262
262
  "path-to-regexp": "8.4.2"
263
263
  };
264
264
  var package_default$2 = {
@@ -361,7 +361,7 @@ var dependencies$1 = {
361
361
  "esbuild": "^0.28.2",
362
362
  "estree-util-value-to-estree": "^3.5.0",
363
363
  "github-slugger": "^2.0.0",
364
- "magic-string": "^1.4.1",
364
+ "magic-string": "^1.4.2",
365
365
  "mdast-util-mdx": "^3.0.0",
366
366
  "picocolors": "^1.1.1",
367
367
  "picomatch": "^4.0.7",
@@ -372,7 +372,7 @@ var dependencies$1 = {
372
372
  "unist-util-visit": "^5.1.0",
373
373
  "vfile": "^6.0.3",
374
374
  "yaml": "^2.9.1",
375
- "yuku-analyzer": "^0.10.2",
375
+ "yuku-analyzer": "^0.17.0",
376
376
  "zod": "^4.6.5"
377
377
  };
378
378
  var devDependencies$1 = {
@@ -381,21 +381,21 @@ var devDependencies$1 = {
381
381
  "@types/bun": "^1.4.2",
382
382
  "@types/mdast": "^4.0.4",
383
383
  "@types/mdx": "^2.0.14",
384
- "@types/node": "^26.6.1",
384
+ "@types/node": "^26.6.4",
385
385
  "@types/picomatch": "^4.0.3",
386
386
  "@types/react": "^19.3.0",
387
387
  "fumadocs-core": "workspace:*",
388
388
  "mdast-util-directive": "^3.1.0",
389
- "next": "^16.3.5",
389
+ "next": "^16.3.8",
390
390
  "react": "^19.3.0",
391
391
  "remark": "^15.0.1",
392
392
  "remark-directive": "^4.0.0",
393
393
  "remark-mdx": "^3.1.1",
394
- "rolldown": "^1.2.9",
394
+ "rolldown": "^1.2.12",
395
395
  "satteri": "^0.10.5",
396
396
  "tsconfig": "workspace:*",
397
397
  "tsdown": "0.23.0",
398
- "vite": "^8.3.0",
398
+ "vite": "^8.3.2",
399
399
  "webpack": "^5.111.1"
400
400
  };
401
401
  var peerDependencies$1 = {
@@ -470,7 +470,7 @@ var package_exports = /* @__PURE__ */ __exportAll({
470
470
  version: () => version
471
471
  });
472
472
  var name = "@fumadocs/base-ui";
473
- var version = "16.15.18";
473
+ var version = "16.16.1";
474
474
  var description = "The Base UI version of Fumadocs UI";
475
475
  var keywords = ["Docs", "Fumadocs"];
476
476
  var homepage = "https://fumadocs.dev";
@@ -562,6 +562,14 @@ var exports = {
562
562
  "./layouts/shared/slots/language-select": "./dist/layouts/shared/slots/language-select.js",
563
563
  "./layouts/shared/slots/search-trigger": "./dist/layouts/shared/slots/search-trigger.js",
564
564
  "./layouts/shared/slots/theme-switch": "./dist/layouts/shared/slots/theme-switch.js",
565
+ "./layouts/spacious": "./dist/layouts/spacious/index.js",
566
+ "./layouts/spacious/page": "./dist/layouts/spacious/page/index.js",
567
+ "./layouts/spacious/page/slots/breadcrumb": "./dist/layouts/spacious/page/slots/breadcrumb.js",
568
+ "./layouts/spacious/page/slots/footer": "./dist/layouts/spacious/page/slots/footer.js",
569
+ "./layouts/spacious/page/slots/toc": "./dist/layouts/spacious/page/slots/toc.js",
570
+ "./layouts/spacious/slots/actions": "./dist/layouts/spacious/slots/actions.js",
571
+ "./layouts/spacious/slots/header": "./dist/layouts/spacious/slots/header.js",
572
+ "./layouts/spacious/slots/sidebar": "./dist/layouts/spacious/slots/sidebar.js",
565
573
  "./mdx": {
566
574
  "types": "./dist/mdx.d.ts",
567
575
  "node": "./dist/mdx.server.js",
@@ -597,14 +605,14 @@ var dependencies = {
597
605
  "@fuma-translate/react": "^1.0.2",
598
606
  "@fumadocs/tailwind": "workspace:*",
599
607
  "class-variance-authority": "^0.7.1",
600
- "cn": "^0.3.0",
601
- "lucide-react": "^1.47.0",
602
- "motion": "^13.4.0",
608
+ "cn": "^0.4.0",
609
+ "lucide-react": "^1.50.0",
610
+ "motion": "^14.0.0",
603
611
  "next-themes": "^0.4.6",
604
612
  "react-remove-scroll": "^2.7.2",
605
613
  "rehype-raw": "^7.0.0",
606
614
  "scroll-into-view-if-needed": "^3.1.0",
607
- "shiki": "^4.4.3",
615
+ "shiki": "^4.5.0",
608
616
  "unist-util-visit": "^5.1.0"
609
617
  };
610
618
  var devDependencies = {
@@ -614,7 +622,7 @@ var devDependencies = {
614
622
  "@tsdown/css": "^0.23.0",
615
623
  "@types/hast": "^3.0.5",
616
624
  "@types/mdx": "^2.0.14",
617
- "@types/node": "^26.6.1",
625
+ "@types/node": "^26.6.4",
618
626
  "@types/react": "^19.3.0",
619
627
  "@types/react-dom": "^19.3.0",
620
628
  "fuma-cli": "^0.3.1",
@@ -732,4 +740,4 @@ depVersions["fumadocs-ui"] = `npm:${name}@${version}`;
732
740
  //#endregion
733
741
  export { templates as i, isCI as n, sourceDir as r, depVersions as t };
734
742
 
735
- //# sourceMappingURL=constants-B3bccTnf.js.map
743
+ //# sourceMappingURL=constants-BAh0aByZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-B3bccTnf.js","names":["corePkg","mdxPkg","basePkg","versionPkg.dependencies","basePkg.name","basePkg.version"],"sources":["../../create-app-versions/package.json","../../core/package.json","../../mdx/package.json","../../base-ui/package.json","../src/constants.ts"],"sourcesContent":["","","","","import { fileURLToPath } from 'node:url';\nimport versionPkg from '../../create-app-versions/package.json';\nimport * as corePkg from '../../core/package.json';\nimport * as mdxPkg from '../../mdx/package.json';\nimport * as basePkg from '../../base-ui/package.json';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\n\nexport const isCI = Boolean(process.env.CI);\n\nexport interface TemplateInfo {\n value:\n | '+next+fuma-docs-mdx'\n | 'astro'\n | 'waku'\n | 'react-router'\n | 'react-router-spa'\n | 'tanstack-start'\n | 'tanstack-start-spa'\n | '+next+fuma-docs-mdx+static';\n label: string;\n appDir: string;\n /**\n * path to root provider, relative to `appDir``\n */\n rootProviderPath: string;\n hint?: string;\n /**\n * rename files when copying from template\n */\n rename?: (name: string) => string;\n}\n\nexport const templates: TemplateInfo[] = [\n {\n value: '+next+fuma-docs-mdx',\n label: 'Next.js: Fumadocs MDX',\n hint: 'recommended: powerful and mature',\n appDir: '',\n rootProviderPath: 'app/layout.tsx',\n },\n {\n value: 'waku',\n label: 'Waku: Fumadocs MDX',\n hint: 'recommended: fast and simple',\n appDir: 'src',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: '+next+fuma-docs-mdx+static',\n label: 'Next.js Static: Fumadocs MDX',\n appDir: '',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'react-router',\n label: 'React Router: Fumadocs MDX (not RSC)',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'react-router-spa',\n label: 'React Router SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'tanstack-start',\n label: 'Tanstack Start: Fumadocs MDX (not RSC)',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n {\n value: 'tanstack-start-spa',\n label: 'Tanstack Start SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n {\n value: 'astro',\n label: 'Astro: React Islands',\n hint: 'partial support only, uses Astro Content Collections.',\n appDir: 'src',\n rootProviderPath: 'components/docs.tsx',\n },\n];\n\nconst workspaces = [corePkg, mdxPkg, basePkg];\n\nexport const depVersions = versionPkg.dependencies;\n\nfor (const workspace of workspaces) {\n depVersions[workspace.name as keyof typeof depVersions] = workspace.version;\n}\n\ndepVersions['fumadocs-ui'] = `npm:${basePkg.name}@${basePkg.version}`;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AIMA,MAAa,YAAY,cAAc,IAAI,IAAI,OAAO,YAAY,GAAG,CAAC,CAAC,IAAI;AAE3E,MAAa,OAAO,QAAQ,QAAQ,IAAI,EAAE;AAyB1C,MAAa,YAA4B;CACvC;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;AACF;AAEA,MAAM,aAAa;CAACA;CAASC;CAAQC;AAAO;AAE5C,MAAa,cAAcC;AAE3B,KAAK,MAAM,aAAa,YACtB,YAAY,UAAU,QAAoC,UAAU;AAGtE,YAAY,iBAAiB,OAAOC,KAAa,GAAGC"}
1
+ {"version":3,"file":"constants-BAh0aByZ.js","names":["corePkg","mdxPkg","basePkg","versionPkg.dependencies","basePkg.name","basePkg.version"],"sources":["../../create-app-versions/package.json","../../core/package.json","../../mdx/package.json","../../base-ui/package.json","../src/constants.ts"],"sourcesContent":["","","","","import { fileURLToPath } from 'node:url';\nimport versionPkg from '../../create-app-versions/package.json';\nimport * as corePkg from '../../core/package.json';\nimport * as mdxPkg from '../../mdx/package.json';\nimport * as basePkg from '../../base-ui/package.json';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\n\nexport const isCI = Boolean(process.env.CI);\n\nexport interface TemplateInfo {\n value:\n | '+next+fuma-docs-mdx'\n | 'astro'\n | 'waku'\n | 'react-router'\n | 'react-router-spa'\n | 'tanstack-start'\n | 'tanstack-start-spa'\n | '+next+fuma-docs-mdx+static';\n label: string;\n appDir: string;\n /**\n * path to root provider, relative to `appDir``\n */\n rootProviderPath: string;\n hint?: string;\n /**\n * rename files when copying from template\n */\n rename?: (name: string) => string;\n}\n\nexport const templates: TemplateInfo[] = [\n {\n value: '+next+fuma-docs-mdx',\n label: 'Next.js: Fumadocs MDX',\n hint: 'recommended: powerful and mature',\n appDir: '',\n rootProviderPath: 'app/layout.tsx',\n },\n {\n value: 'waku',\n label: 'Waku: Fumadocs MDX',\n hint: 'recommended: fast and simple',\n appDir: 'src',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: '+next+fuma-docs-mdx+static',\n label: 'Next.js Static: Fumadocs MDX',\n appDir: '',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'react-router',\n label: 'React Router: Fumadocs MDX (not RSC)',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'react-router-spa',\n label: 'React Router SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'tanstack-start',\n label: 'Tanstack Start: Fumadocs MDX (not RSC)',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n {\n value: 'tanstack-start-spa',\n label: 'Tanstack Start SPA: Fumadocs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n {\n value: 'astro',\n label: 'Astro: React Islands',\n hint: 'partial support only, uses Astro Content Collections.',\n appDir: 'src',\n rootProviderPath: 'components/docs.tsx',\n },\n];\n\nconst workspaces = [corePkg, mdxPkg, basePkg];\n\nexport const depVersions = versionPkg.dependencies;\n\nfor (const workspace of workspaces) {\n depVersions[workspace.name as keyof typeof depVersions] = workspace.version;\n}\n\ndepVersions['fumadocs-ui'] = `npm:${basePkg.name}@${basePkg.version}`;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AIMA,MAAa,YAAY,cAAc,IAAI,IAAI,OAAO,YAAY,GAAG,CAAC,CAAC,IAAI;AAE3E,MAAa,OAAO,QAAQ,QAAQ,IAAI,EAAE;AAyB1C,MAAa,YAA4B;CACvC;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;CACA;EACE,OAAO;EACP,OAAO;EACP,MAAM;EACN,QAAQ;EACR,kBAAkB;CACpB;AACF;AAEA,MAAM,aAAa;CAACA;CAASC;CAAQC;AAAO;AAE5C,MAAa,cAAcC;AAE3B,KAAK,MAAM,aAAa,YACtB,YAAY,UAAU,QAAoC,UAAU;AAGtE,YAAY,iBAAiB,OAAOC,KAAa,GAAGC"}
@@ -1,4 +1,4 @@
1
- import { t as depVersions } from "./constants-B3bccTnf.js";
1
+ import { t as depVersions } from "./constants-BAh0aByZ.js";
2
2
  import { HttpRegistryConnector } from "fuma-cli/registry/connector";
3
3
  import { getDefaultConfig } from "@fumadocs/cli/config";
4
4
  import { runFeature } from "@fumadocs/cli/features";
@@ -24,4 +24,4 @@ function feature(feature, options) {
24
24
  //#endregion
25
25
  export { feature as t };
26
26
 
27
- //# sourceMappingURL=feature-CXjiy0TW.js.map
27
+ //# sourceMappingURL=feature-jzKd1o2p.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-CXjiy0TW.js","names":[],"sources":["../src/plugins/feature.ts"],"sourcesContent":["import type { TemplatePlugin } from '@/index';\nimport { HttpRegistryConnector } from 'fuma-cli/registry/connector';\nimport { getDefaultConfig } from '@fumadocs/cli/config';\nimport { type Feature, runFeature } from '@fumadocs/cli/features';\nimport { loadProject } from '@fumadocs/cli/project';\nimport { depVersions } from '@/constants';\n\n/** apply a Fumadocs CLI feature to the generated project */\nexport function feature<O extends object>(feature: Feature<O>, options: O): TemplatePlugin {\n return {\n async afterWrite() {\n const config = await getDefaultConfig(this.dest);\n const project = await loadProject(config, this.dest);\n\n await runFeature(feature, options, {\n project,\n connector: new HttpRegistryConnector('https://fumadocs.dev/registry'),\n versions: depVersions,\n io: { log: this.log, installDependencies: false, confirmOverwrite: async () => true },\n });\n },\n };\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,QAA0B,SAAqB,SAA4B;CACzF,OAAO,EACL,MAAM,aAAa;EACjB,MAAM,SAAS,MAAM,iBAAiB,KAAK,IAAI;EAC/C,MAAM,UAAU,MAAM,YAAY,QAAQ,KAAK,IAAI;EAEnD,MAAM,WAAW,SAAS,SAAS;GACjC;GACA,WAAW,IAAI,sBAAsB,+BAA+B;GACpE,UAAU;GACV,IAAI;IAAE,KAAK,KAAK;IAAK,qBAAqB;IAAO,kBAAkB,YAAY;GAAK;EACtF,CAAC;CACH,EACF;AACF"}
1
+ {"version":3,"file":"feature-jzKd1o2p.js","names":[],"sources":["../src/plugins/feature.ts"],"sourcesContent":["import type { TemplatePlugin } from '@/index';\nimport { HttpRegistryConnector } from 'fuma-cli/registry/connector';\nimport { getDefaultConfig } from '@fumadocs/cli/config';\nimport { type Feature, runFeature } from '@fumadocs/cli/features';\nimport { loadProject } from '@fumadocs/cli/project';\nimport { depVersions } from '@/constants';\n\n/** apply a Fumadocs CLI feature to the generated project */\nexport function feature<O extends object>(feature: Feature<O>, options: O): TemplatePlugin {\n return {\n async afterWrite() {\n const config = await getDefaultConfig(this.dest);\n const project = await loadProject(config, this.dest);\n\n await runFeature(feature, options, {\n project,\n connector: new HttpRegistryConnector('https://fumadocs.dev/registry'),\n versions: depVersions,\n io: { log: this.log, installDependencies: false, confirmOverwrite: async () => true },\n });\n },\n };\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,QAA0B,SAAqB,SAA4B;CACzF,OAAO,EACL,MAAM,aAAa;EACjB,MAAM,SAAS,MAAM,iBAAiB,KAAK,IAAI;EAC/C,MAAM,UAAU,MAAM,YAAY,QAAQ,KAAK,IAAI;EAEnD,MAAM,WAAW,SAAS,SAAS;GACjC;GACA,WAAW,IAAI,sBAAsB,+BAA+B;GACpE,UAAU;GACV,IAAI;IAAE,KAAK,KAAK;IAAK,qBAAqB;IAAO,kBAAkB,YAAY;GAAK;EACtF,CAAC;CACH,EACF;AACF"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as create } from "./src-CKqbbKgU.js";
1
+ import { t as create } from "./src-D028hn2H.js";
2
2
  export { create };
@@ -1,2 +1,2 @@
1
- import { t as feature } from "../feature-CXjiy0TW.js";
1
+ import { t as feature } from "../feature-jzKd1o2p.js";
2
2
  export { feature };
@@ -1,4 +1,4 @@
1
- import { i as templates, r as sourceDir, t as depVersions } from "./constants-B3bccTnf.js";
1
+ import { i as templates, r as sourceDir, t as depVersions } from "./constants-BAh0aByZ.js";
2
2
  import fs from "node:fs/promises";
3
3
  import path, { join } from "node:path";
4
4
  import { x } from "tinyexec";
@@ -145,4 +145,4 @@ async function initPackageJson(projectName, packageJsonPath) {
145
145
  //#endregion
146
146
  export { getPackageManager as n, managers as r, create as t };
147
147
 
148
- //# sourceMappingURL=src-CKqbbKgU.js.map
148
+ //# sourceMappingURL=src-D028hn2H.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"src-CKqbbKgU.js","names":[],"sources":["../src/auto-install.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":["import { x } from 'tinyexec';\n\nexport type PackageManager = (typeof managers)[number];\n\nexport const managers = ['npm', 'yarn', 'bun', 'pnpm'] as const;\n\nexport function getPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n\n return 'npm';\n}\n\nexport async function autoInstall(manager: PackageManager, dest: string) {\n await x(manager, ['install'], {\n throwOnError: true,\n nodeOptions: {\n env: {\n ...process.env,\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n cwd: dest,\n },\n });\n}\n","import fs from 'node:fs/promises';\nimport path, { join } from 'node:path';\nimport { x } from 'tinyexec';\n\nexport async function copy(\n from: string,\n to: string,\n options: {\n rename?: (s: string) => string;\n filter?: (s: string) => boolean;\n filterDir?: (dir: string) => boolean;\n } = {},\n): Promise<void> {\n const { rename = (s) => s, filterDir = () => true, filter = () => true } = options;\n const stats = await fs.stat(from);\n\n if (stats.isDirectory() && filterDir(from)) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) => copy(path.join(from, file), path.join(to, file), options)),\n );\n }\n\n if (stats.isFile() && filter(from)) {\n to = rename(to);\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nasync function isInGitRepository(cwd: string) {\n const { exitCode } = await x('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\nasync function isDefaultBranchSet(cwd: string) {\n const { exitCode } = await x('git', ['config', 'init.defaultBranch'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\nexport async function tryGitInit(cwd: string): Promise<boolean> {\n const { exitCode } = await x('git', ['--version']);\n if (exitCode !== 0) return false;\n\n if (await isInGitRepository(cwd)) return false;\n\n try {\n await x('git', ['init'], {\n throwOnError: true,\n nodeOptions: { cwd },\n });\n\n if (!(await isDefaultBranchSet(cwd))) {\n await x('git', ['checkout', '-b', 'main'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n }\n\n await x('git', ['add', '-A'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n\n await x('git', ['commit', '-m', 'Initial commit from Create Fumadocs App'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n return true;\n } catch {\n await fs.rm(join(cwd, '.git'), { recursive: true, force: true });\n\n return false;\n }\n}\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { copy, tryGitInit } from '@/utils';\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { depVersions, sourceDir, type TemplateInfo, templates } from './constants';\n\nexport type Template = TemplateInfo['value'];\nexport interface Options {\n outputDir: string;\n template: Template;\n\n /**\n * the package manager to use\n *\n * @defaultValue 'npm'\n */\n packageManager?: PackageManager;\n\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n plugins?: TemplatePlugin[];\n}\n\nexport interface TemplatePluginContext {\n template: TemplateInfo;\n log: (message: string) => void;\n /**\n * output directory\n */\n dest: string;\n\n /**\n * output directory for app code (e.g. under `/src`)\n */\n appDir: string;\n}\n\nexport type PackageJsonType = {\n name?: string;\n version?: string;\n private?: boolean;\n scripts?: Record<string, string>;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} & Record<string, unknown>;\n\ntype Awaitable<T> = T | Promise<T>;\n\nexport interface TemplatePlugin {\n template?: (\n this: Pick<TemplatePluginContext, 'dest'>,\n info: TemplateInfo,\n ) => Awaitable<void | TemplateInfo>;\n packageJson?: (\n this: TemplatePluginContext,\n packageJson: PackageJsonType,\n ) => Awaitable<void | PackageJsonType>;\n afterWrite?: (this: TemplatePluginContext) => Awaitable<void>;\n readme?: (this: TemplatePluginContext, content: string) => Awaitable<void | string>;\n}\n\nexport async function create(createOptions: Options): Promise<void> {\n const {\n outputDir,\n plugins = [],\n packageManager = 'npm',\n initializeGit = false,\n installDeps = false,\n log = console.log,\n } = createOptions;\n\n let template = templates.find((item) => item.value === createOptions.template)!;\n for (const plugin of plugins) {\n template = (await plugin.template?.call({ dest: outputDir }, template)) ?? template;\n }\n\n const appDir = path.join(outputDir, template.appDir);\n const projectName = path.basename(outputDir);\n const pluginContext: TemplatePluginContext = {\n template,\n dest: outputDir,\n log,\n appDir,\n };\n\n await copy(path.join(sourceDir, 'template', template.value), outputDir, {\n rename(file) {\n file = file.replace('example.gitignore', '.gitignore');\n\n return template.rename?.(file) ?? file;\n },\n });\n\n const packageJsonPath = path.join(outputDir, 'package.json');\n let packageJson = await initPackageJson(projectName, packageJsonPath);\n for (const plugin of plugins) {\n packageJson = (await plugin.packageJson?.call(pluginContext, packageJson)) ?? packageJson;\n }\n await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n const readmePath = path.join(outputDir, 'README.md');\n let readme = `# ${projectName}\\n\\n${await fs.readFile(readmePath)}`;\n for (const plugin of plugins) {\n readme = (await plugin.readme?.call(pluginContext, readme)) ?? readme;\n }\n await fs.writeFile(readmePath, readme);\n\n for (const plugin of plugins) {\n await plugin.afterWrite?.call(pluginContext);\n }\n\n if (installDeps) {\n try {\n await autoInstall(packageManager, outputDir);\n log('Installed dependencies');\n } catch (err) {\n log(`Failed to install dependencies: ${err}`);\n }\n }\n\n if (initializeGit && (await tryGitInit(outputDir))) {\n log('Initialized Git repository');\n }\n}\n\nasync function initPackageJson(\n projectName: string,\n packageJsonPath: string,\n): Promise<PackageJsonType> {\n function replaceWorkspaceDeps(deps: Record<string, string> = {}) {\n for (const k in deps) {\n if (deps[k].startsWith('workspace:') && k in depVersions) {\n deps[k] = depVersions[k as keyof typeof depVersions];\n }\n }\n\n return deps;\n }\n\n const packageJson: PackageJsonType = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n const dependencies = replaceWorkspaceDeps(packageJson.dependencies);\n const devDependencies = replaceWorkspaceDeps(packageJson.devDependencies);\n const scripts = { ...packageJson.scripts };\n\n return {\n ...packageJson,\n name: projectName,\n scripts,\n dependencies,\n devDependencies,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"src-D028hn2H.js","names":[],"sources":["../src/auto-install.ts","../src/utils.ts","../src/index.ts"],"sourcesContent":["import { x } from 'tinyexec';\n\nexport type PackageManager = (typeof managers)[number];\n\nexport const managers = ['npm', 'yarn', 'bun', 'pnpm'] as const;\n\nexport function getPackageManager(): PackageManager {\n const userAgent = process.env.npm_config_user_agent ?? '';\n\n if (userAgent.startsWith('yarn')) {\n return 'yarn';\n }\n\n if (userAgent.startsWith('pnpm')) {\n return 'pnpm';\n }\n\n if (userAgent.startsWith('bun')) {\n return 'bun';\n }\n\n return 'npm';\n}\n\nexport async function autoInstall(manager: PackageManager, dest: string) {\n await x(manager, ['install'], {\n throwOnError: true,\n nodeOptions: {\n env: {\n ...process.env,\n NODE_ENV: 'development',\n DISABLE_OPENCOLLECTIVE: '1',\n },\n cwd: dest,\n },\n });\n}\n","import fs from 'node:fs/promises';\nimport path, { join } from 'node:path';\nimport { x } from 'tinyexec';\n\nexport async function copy(\n from: string,\n to: string,\n options: {\n rename?: (s: string) => string;\n filter?: (s: string) => boolean;\n filterDir?: (dir: string) => boolean;\n } = {},\n): Promise<void> {\n const { rename = (s) => s, filterDir = () => true, filter = () => true } = options;\n const stats = await fs.stat(from);\n\n if (stats.isDirectory() && filterDir(from)) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) => copy(path.join(from, file), path.join(to, file), options)),\n );\n }\n\n if (stats.isFile() && filter(from)) {\n to = rename(to);\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nasync function isInGitRepository(cwd: string) {\n const { exitCode } = await x('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\nasync function isDefaultBranchSet(cwd: string) {\n const { exitCode } = await x('git', ['config', 'init.defaultBranch'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\nexport async function tryGitInit(cwd: string): Promise<boolean> {\n const { exitCode } = await x('git', ['--version']);\n if (exitCode !== 0) return false;\n\n if (await isInGitRepository(cwd)) return false;\n\n try {\n await x('git', ['init'], {\n throwOnError: true,\n nodeOptions: { cwd },\n });\n\n if (!(await isDefaultBranchSet(cwd))) {\n await x('git', ['checkout', '-b', 'main'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n }\n\n await x('git', ['add', '-A'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n\n await x('git', ['commit', '-m', 'Initial commit from Create Fumadocs App'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n return true;\n } catch {\n await fs.rm(join(cwd, '.git'), { recursive: true, force: true });\n\n return false;\n }\n}\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { copy, tryGitInit } from '@/utils';\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { depVersions, sourceDir, type TemplateInfo, templates } from './constants';\n\nexport type Template = TemplateInfo['value'];\nexport interface Options {\n outputDir: string;\n template: Template;\n\n /**\n * the package manager to use\n *\n * @defaultValue 'npm'\n */\n packageManager?: PackageManager;\n\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n plugins?: TemplatePlugin[];\n}\n\nexport interface TemplatePluginContext {\n template: TemplateInfo;\n log: (message: string) => void;\n /**\n * output directory\n */\n dest: string;\n\n /**\n * output directory for app code (e.g. under `/src`)\n */\n appDir: string;\n}\n\nexport type PackageJsonType = {\n name?: string;\n version?: string;\n private?: boolean;\n scripts?: Record<string, string>;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} & Record<string, unknown>;\n\ntype Awaitable<T> = T | Promise<T>;\n\nexport interface TemplatePlugin {\n template?: (\n this: Pick<TemplatePluginContext, 'dest'>,\n info: TemplateInfo,\n ) => Awaitable<void | TemplateInfo>;\n packageJson?: (\n this: TemplatePluginContext,\n packageJson: PackageJsonType,\n ) => Awaitable<void | PackageJsonType>;\n afterWrite?: (this: TemplatePluginContext) => Awaitable<void>;\n readme?: (this: TemplatePluginContext, content: string) => Awaitable<void | string>;\n}\n\nexport async function create(createOptions: Options): Promise<void> {\n const {\n outputDir,\n plugins = [],\n packageManager = 'npm',\n initializeGit = false,\n installDeps = false,\n log = console.log,\n } = createOptions;\n\n let template = templates.find((item) => item.value === createOptions.template)!;\n for (const plugin of plugins) {\n template = (await plugin.template?.call({ dest: outputDir }, template)) ?? template;\n }\n\n const appDir = path.join(outputDir, template.appDir);\n const projectName = path.basename(outputDir);\n const pluginContext: TemplatePluginContext = {\n template,\n dest: outputDir,\n log,\n appDir,\n };\n\n await copy(path.join(sourceDir, 'template', template.value), outputDir, {\n rename(file) {\n file = file.replace('example.gitignore', '.gitignore');\n\n return template.rename?.(file) ?? file;\n },\n });\n\n const packageJsonPath = path.join(outputDir, 'package.json');\n let packageJson = await initPackageJson(projectName, packageJsonPath);\n for (const plugin of plugins) {\n packageJson = (await plugin.packageJson?.call(pluginContext, packageJson)) ?? packageJson;\n }\n await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n const readmePath = path.join(outputDir, 'README.md');\n let readme = `# ${projectName}\\n\\n${await fs.readFile(readmePath)}`;\n for (const plugin of plugins) {\n readme = (await plugin.readme?.call(pluginContext, readme)) ?? readme;\n }\n await fs.writeFile(readmePath, readme);\n\n for (const plugin of plugins) {\n await plugin.afterWrite?.call(pluginContext);\n }\n\n if (installDeps) {\n try {\n await autoInstall(packageManager, outputDir);\n log('Installed dependencies');\n } catch (err) {\n log(`Failed to install dependencies: ${err}`);\n }\n }\n\n if (initializeGit && (await tryGitInit(outputDir))) {\n log('Initialized Git repository');\n }\n}\n\nasync function initPackageJson(\n projectName: string,\n packageJsonPath: string,\n): Promise<PackageJsonType> {\n function replaceWorkspaceDeps(deps: Record<string, string> = {}) {\n for (const k in deps) {\n if (deps[k].startsWith('workspace:') && k in depVersions) {\n deps[k] = depVersions[k as keyof typeof depVersions];\n }\n }\n\n return deps;\n }\n\n const packageJson: PackageJsonType = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n const dependencies = replaceWorkspaceDeps(packageJson.dependencies);\n const devDependencies = replaceWorkspaceDeps(packageJson.devDependencies);\n const scripts = { ...packageJson.scripts };\n\n return {\n ...packageJson,\n name: projectName,\n scripts,\n dependencies,\n devDependencies,\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-fumadocs-app",
3
- "version": "16.2.13",
3
+ "version": "16.2.15",
4
4
  "description": "Create a new documentation site with Fumadocs",
5
5
  "keywords": [
6
6
  "Docs",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@clack/prompts": "^1.8.1",
43
- "@fumadocs/cli": "1.7.1",
43
+ "@fumadocs/cli": "1.7.2",
44
44
  "cac": "^7.0.0",
45
45
  "fuma-cli": "^0.3.1",
46
46
  "picocolors": "^1.1.1",
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/cross-spawn": "^6.0.6",
51
- "@types/node": "26.6.1",
51
+ "@types/node": "26.6.4",
52
52
  "tinyglobby": "^0.2.17",
53
53
  "tsconfig": "0.0.0",
54
54
  "tsdown": "0.23.0",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-next",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "build": "next build",
@@ -9,19 +9,19 @@
9
9
  "types:check": "next typegen && tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "cn": "^0.3.0",
12
+ "cn": "^0.4.0",
13
13
  "fumadocs-core": "workspace:*",
14
14
  "fumadocs-mdx": "workspace:*",
15
15
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
16
- "lucide-react": "^1.47.0",
17
- "next": "16.3.5",
16
+ "lucide-react": "^1.50.0",
17
+ "next": "16.3.8",
18
18
  "react": "^19.3.0",
19
19
  "react-dom": "^19.3.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@tailwindcss/postcss": "^4.3.3",
23
23
  "@types/mdx": "^2.0.14",
24
- "@types/node": "^26.6.1",
24
+ "@types/node": "^26.6.4",
25
25
  "@types/react": "^19.3.0",
26
26
  "@types/react-dom": "^19.3.0",
27
27
  "postcss": "^8.5.28",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-next-static",
3
- "version": "0.0.38",
3
+ "version": "0.0.40",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "build": "next build",
@@ -9,19 +9,19 @@
9
9
  "types:check": "next typegen && tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "cn": "^0.3.0",
12
+ "cn": "^0.4.0",
13
13
  "fumadocs-core": "workspace:*",
14
14
  "fumadocs-mdx": "workspace:*",
15
15
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
16
- "lucide-react": "^1.47.0",
17
- "next": "16.3.5",
16
+ "lucide-react": "^1.50.0",
17
+ "next": "16.3.8",
18
18
  "react": "^19.3.0",
19
19
  "react-dom": "^19.3.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@tailwindcss/postcss": "^4.3.3",
23
23
  "@types/mdx": "^2.0.14",
24
- "@types/node": "^26.6.1",
24
+ "@types/node": "^26.6.4",
25
25
  "@types/react": "^19.3.0",
26
26
  "@types/react-dom": "^19.3.0",
27
27
  "postcss": "^8.5.28",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-astro",
3
- "version": "0.0.35",
3
+ "version": "0.0.37",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -12,14 +12,14 @@
12
12
  },
13
13
  "dependencies": {
14
14
  "@astrojs/markdown-remark": "^7.3.1",
15
- "@astrojs/mdx": "^8.0.1",
16
- "@astrojs/react": "^6.0.6",
17
- "astro": "^7.3.3",
15
+ "@astrojs/mdx": "^8.0.2",
16
+ "@astrojs/react": "^7.0.0",
17
+ "astro": "^7.3.5",
18
18
  "fumadocs-core": "workspace:*",
19
19
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
20
20
  "react": "^19.3.0",
21
21
  "react-dom": "^19.3.0",
22
- "sharp": "^0.35.4",
22
+ "sharp": "^0.35.5",
23
23
  "takumi-js": "^2.14.0"
24
24
  },
25
25
  "devDependencies": {
@@ -11,12 +11,12 @@
11
11
  "dependencies": {
12
12
  "@react-router/node": "^8.4.0",
13
13
  "@react-router/serve": "^8.4.0",
14
- "cn": "^0.3.0",
14
+ "cn": "^0.4.0",
15
15
  "fumadocs-core": "workspace:*",
16
16
  "fumadocs-mdx": "workspace:*",
17
17
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
18
18
  "isbot": "^5.2.2",
19
- "lucide-react": "^1.47.0",
19
+ "lucide-react": "^1.50.0",
20
20
  "react": "^19.3.0",
21
21
  "react-dom": "^19.3.0",
22
22
  "react-router": "^8.4.0",
@@ -26,12 +26,12 @@
26
26
  "@react-router/dev": "^8.4.0",
27
27
  "@tailwindcss/vite": "^4.3.3",
28
28
  "@types/mdx": "^2.0.14",
29
- "@types/node": "^26.6.1",
29
+ "@types/node": "^26.6.4",
30
30
  "@types/react": "^19.3.0",
31
31
  "@types/react-dom": "^19.3.0",
32
32
  "react-router-devtools": "^6.2.3",
33
33
  "tailwindcss": "^4.3.3",
34
34
  "typescript": "^7.0.2",
35
- "vite": "^8.3.0"
35
+ "vite": "^8.3.2"
36
36
  }
37
37
  }
@@ -10,12 +10,12 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@react-router/node": "^8.4.0",
13
- "cn": "^0.3.0",
13
+ "cn": "^0.4.0",
14
14
  "fumadocs-core": "workspace:*",
15
15
  "fumadocs-mdx": "workspace:*",
16
16
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
17
17
  "isbot": "^5.2.2",
18
- "lucide-react": "^1.47.0",
18
+ "lucide-react": "^1.50.0",
19
19
  "react": "^19.3.0",
20
20
  "react-dom": "^19.3.0",
21
21
  "react-router": "^8.4.0"
@@ -24,13 +24,13 @@
24
24
  "@react-router/dev": "^8.4.0",
25
25
  "@tailwindcss/vite": "^4.3.3",
26
26
  "@types/mdx": "^2.0.14",
27
- "@types/node": "^26.6.1",
27
+ "@types/node": "^26.6.4",
28
28
  "@types/react": "^19.3.0",
29
29
  "@types/react-dom": "^19.3.0",
30
30
  "react-router-devtools": "^6.2.3",
31
31
  "serve": "^14.2.6",
32
32
  "tailwindcss": "^4.3.3",
33
33
  "typescript": "^7.0.2",
34
- "vite": "^8.3.0"
34
+ "vite": "^8.3.2"
35
35
  }
36
36
  }
@@ -11,27 +11,27 @@
11
11
  "types:check": "tsc --noEmit"
12
12
  },
13
13
  "dependencies": {
14
- "@tanstack/react-router": "1.170.38",
14
+ "@tanstack/react-router": "1.170.41",
15
15
  "@tanstack/react-router-devtools": "1.167.2",
16
- "@tanstack/react-start": "1.168.56",
17
- "cn": "^0.3.0",
16
+ "@tanstack/react-start": "1.168.60",
17
+ "cn": "^0.4.0",
18
18
  "fumadocs-core": "workspace:*",
19
19
  "fumadocs-mdx": "workspace:*",
20
20
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
21
- "lucide-react": "^1.47.0",
21
+ "lucide-react": "^1.50.0",
22
22
  "react": "^19.3.0",
23
23
  "react-dom": "^19.3.0"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@tailwindcss/vite": "^4.3.3",
27
27
  "@types/mdx": "^2.0.14",
28
- "@types/node": "^26.6.1",
28
+ "@types/node": "^26.6.4",
29
29
  "@types/react": "^19.3.0",
30
30
  "@types/react-dom": "^19.3.0",
31
31
  "@vitejs/plugin-react": "^6.1.1",
32
32
  "nitro": "3.0.260903-beta",
33
33
  "tailwindcss": "^4.3.3",
34
34
  "typescript": "^7.0.2",
35
- "vite": "^8.3.0"
35
+ "vite": "^8.3.2"
36
36
  }
37
37
  }
@@ -11,22 +11,22 @@
11
11
  "types:check": "tsc --noEmit"
12
12
  },
13
13
  "dependencies": {
14
- "@tanstack/react-router": "1.170.38",
14
+ "@tanstack/react-router": "1.170.41",
15
15
  "@tanstack/react-router-devtools": "1.167.2",
16
- "@tanstack/react-start": "1.168.56",
17
- "@tanstack/start-static-server-functions": "1.167.37",
18
- "cn": "^0.3.0",
16
+ "@tanstack/react-start": "1.168.60",
17
+ "@tanstack/start-static-server-functions": "1.167.39",
18
+ "cn": "^0.4.0",
19
19
  "fumadocs-core": "workspace:*",
20
20
  "fumadocs-mdx": "workspace:*",
21
21
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
22
- "lucide-react": "^1.47.0",
22
+ "lucide-react": "^1.50.0",
23
23
  "react": "^19.3.0",
24
24
  "react-dom": "^19.3.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@tailwindcss/vite": "^4.3.3",
28
28
  "@types/mdx": "^2.0.14",
29
- "@types/node": "^26.6.1",
29
+ "@types/node": "^26.6.4",
30
30
  "@types/react": "^19.3.0",
31
31
  "@types/react-dom": "^19.3.0",
32
32
  "@vitejs/plugin-react": "^6.1.1",
@@ -35,6 +35,6 @@
35
35
  "srvx": "^1.0.5",
36
36
  "tailwindcss": "^4.3.3",
37
37
  "typescript": "^7.0.2",
38
- "vite": "^8.3.0"
38
+ "vite": "^8.3.2"
39
39
  }
40
40
  }
@@ -10,25 +10,25 @@
10
10
  "types:check": "tsc --noEmit"
11
11
  },
12
12
  "dependencies": {
13
- "cn": "^0.3.0",
13
+ "cn": "^0.4.0",
14
14
  "fumadocs-core": "workspace:*",
15
15
  "fumadocs-mdx": "workspace:*",
16
16
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
17
- "lucide-react": "^1.47.0",
17
+ "lucide-react": "^1.50.0",
18
18
  "react": "^19.3.0",
19
19
  "react-dom": "^19.3.0",
20
20
  "react-server-dom-webpack": "^19.3.0",
21
21
  "takumi-js": "^2.14.0",
22
- "waku": "1.0.0-rc.1"
22
+ "waku": "1.0.0-rc.2"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@tailwindcss/vite": "^4.3.3",
26
26
  "@types/mdx": "^2.0.14",
27
- "@types/node": "^26.6.1",
27
+ "@types/node": "^26.6.4",
28
28
  "@types/react": "^19.3.0",
29
29
  "@types/react-dom": "^19.3.0",
30
30
  "tailwindcss": "^4.3.3",
31
31
  "typescript": "^7.0.2",
32
- "vite": "^8.3.0"
32
+ "vite": "^8.3.2"
33
33
  }
34
34
  }