create-fumadocs-app 16.2.30 → 16.2.32

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-BdBsNM0B.js";
3
- import { n as getPackageManager, r as managers, t as create } from "./src-DO8uM-EW.js";
4
- import { t as feature } from "./feature-D7DCQAt1.js";
2
+ import { n as getPackageManager, r as managers, t as create } from "./src-55Opr41I.js";
3
+ import { i as templates, n as isCI } from "./constants-BXNeGyPA.js";
4
+ import { t as feature } from "./feature-BSyhSuG1.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";
@@ -1,28 +1,28 @@
1
1
  import { fileURLToPath } from "node:url";
2
2
  // \0rolldown/runtime.js
3
3
  var __defProp = Object.defineProperty;
4
- var __exportAll = (all, no_symbols) => {
5
- let target = {};
4
+ var __exportAll = (all, flags) => {
5
+ let target = Object.setPrototypeOf({}, null);
6
6
  for (var name in all) __defProp(target, name, {
7
7
  get: all[name],
8
8
  enumerable: true
9
9
  });
10
- if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
11
- return target;
10
+ if (!(flags & 1)) __defProp(target, Symbol.toStringTag, { value: "Module" });
11
+ return flags & 2 ? target : Object.preventExtensions(target);
12
12
  };
13
13
  // ../create-app-versions/package.json
14
14
  var dependencies$4 = {
15
- "@biomejs/biome": "^2.6.2",
16
- "@mixedbread/sdk": "^0.78.0",
15
+ "@biomejs/biome": "^2.6.6",
16
+ "@mixedbread/sdk": "^0.80.0",
17
17
  "@orama/core": "^1.2.19",
18
- "algoliasearch": "^5.60.0",
18
+ "algoliasearch": "^5.61.0",
19
19
  "fumadocs-core": "workspace:*",
20
20
  "fumadocs-mdx": "workspace:*",
21
21
  "fumadocs-ui": "workspace:*",
22
22
  "meilisearch": "^0.62.0",
23
- "oxlint": "^1.89.0",
23
+ "oxlint": "^1.92.0",
24
24
  "react": "^19.3.1",
25
- "takumi-js": "^2.17.1",
25
+ "takumi-js": "^2.19.0",
26
26
  "typesense": "^3.2.0",
27
27
  "typesense-fumadocs-adapter": "^0.5.0"
28
28
  };
@@ -51,7 +51,7 @@ var package_exports$3 = /* @__PURE__ */ __exportAll({
51
51
  version: () => version$3
52
52
  });
53
53
  var name$3 = "fumadocs-core";
54
- var version$3 = "16.18.1";
54
+ var version$3 = "16.18.3";
55
55
  var description$3 = "The React.js library for building a documentation website";
56
56
  var keywords$3 = ["Docs", "Fumadocs"];
57
57
  var homepage$3 = "https://fumadocs.dev";
@@ -107,6 +107,7 @@ var exports$3 = {
107
107
  "./mdx-plugins/remark-mdx-files": "./dist/mdx-plugins/remark-mdx-files.js",
108
108
  "./mdx-plugins/remark-mdx-mermaid": "./dist/mdx-plugins/remark-mdx-mermaid.js",
109
109
  "./mdx-plugins/remark-npm": "./dist/mdx-plugins/remark-npm.js",
110
+ "./mdx-plugins/remark-show": "./dist/mdx-plugins/remark-show.js",
110
111
  "./mdx-plugins/remark-steps": "./dist/mdx-plugins/remark-steps.js",
111
112
  "./mdx-plugins/remark-structure": "./dist/mdx-plugins/remark-structure.js",
112
113
  "./mdx-plugins/stringifier": "./dist/mdx-plugins/stringifier.js",
@@ -175,42 +176,42 @@ var dependencies$3 = {
175
176
  "remark-gfm": "^4.0.1",
176
177
  "remark-rehype": "^11.1.2",
177
178
  "scroll-into-view-if-needed": "^3.1.0",
178
- "shiki": "^4.5.0",
179
+ "shiki": "^4.6.0",
179
180
  "tinyglobby": "^0.2.17",
180
181
  "unified": "^11.0.5",
181
182
  "vfile": "^6.0.3",
182
183
  "yaml": "^2.9.1",
183
- "zbsearch": "^4.0.1"
184
+ "zbsearch": "^4.0.2"
184
185
  };
185
186
  var devDependencies$3 = {
186
- "@formatjs/intl-localematcher": "^0.9.0",
187
+ "@formatjs/intl-localematcher": "^0.10.1",
187
188
  "@mdx-js/mdx": "^3.1.1",
188
- "@mixedbread/sdk": "0.78.0",
189
- "@modelcontextprotocol/server": "2.3.1",
189
+ "@mixedbread/sdk": "0.80.0",
190
+ "@modelcontextprotocol/server": "2.4.0",
190
191
  "@orama/core": "^1.2.19",
191
192
  "@oramacloud/client": "^2.1.4",
192
- "@pierre/highlights": "^0.2.0",
193
- "@shikijs/transformers": "^4.5.0",
194
- "@tanstack/react-router": "1.170.45",
193
+ "@pierre/highlights": "^0.4.0",
194
+ "@shikijs/transformers": "^4.6.0",
195
+ "@tanstack/react-router": "1.170.46",
195
196
  "@types/estree-jsx": "^1.0.5",
196
197
  "@types/hast": "^3.0.5",
197
198
  "@types/mdast": "^4.0.4",
198
- "@types/node": "26.6.5",
199
+ "@types/node": "26.6.6",
199
200
  "@types/react": "^19.3.0",
200
201
  "@types/react-dom": "^19.3.0",
201
- "algoliasearch": "5.60.0",
202
+ "algoliasearch": "5.61.0",
202
203
  "flexsearch": "^0.8.212",
203
- "hast-util-to-jsx-runtime": "^2.3.6",
204
- "lucide-react": "^1.61.0",
204
+ "hast-util-to-jsx-runtime": "^2.3.7",
205
+ "lucide-react": "^1.70.0",
205
206
  "meilisearch": "0.62.0",
206
- "next": "16.4.2",
207
- "path-to-regexp": "^8.4.2",
208
- "react-router": "^8.5.0",
207
+ "next": "16.4.5",
208
+ "path-to-regexp": "^9.0.0",
209
+ "react-router": "^8.5.1",
209
210
  "rehype-raw": "^7.0.0",
210
211
  "remark-directive": "^4.0.0",
211
212
  "remark-mdx": "^3.1.1",
212
213
  "tsconfig": "workspace:*",
213
- "tsdown": "0.23.1",
214
+ "tsdown": "0.23.7",
214
215
  "typescript": "^7.0.2",
215
216
  "waku": "1.0.0-rc.4",
216
217
  "zod": "4.6.7"
@@ -263,9 +264,9 @@ var peerDependenciesMeta$3 = {
263
264
  };
264
265
  var inlinedDependencies$1 = {
265
266
  "@formatjs/fast-memoize": "3.1.7",
266
- "@formatjs/intl-localematcher": "0.9.0",
267
- "@shikijs/transformers": "4.5.0",
268
- "path-to-regexp": "8.4.2"
267
+ "@formatjs/intl-localematcher": "0.10.1",
268
+ "@shikijs/transformers": "4.6.0",
269
+ "path-to-regexp": "9.0.0"
269
270
  };
270
271
  var package_default$3 = {
271
272
  name: name$3,
@@ -314,7 +315,7 @@ var package_exports$2 = /* @__PURE__ */ __exportAll({
314
315
  version: () => version$2
315
316
  });
316
317
  var name$2 = "fumadocs-mdx";
317
- var version$2 = "15.5.0";
318
+ var version$2 = "15.5.2";
318
319
  var description$2 = "The built-in source for Fumadocs";
319
320
  var keywords$2 = ["Docs", "fumadocs"];
320
321
  var homepage$2 = "https://fumadocs.dev";
@@ -363,12 +364,16 @@ var scripts$2 = {
363
364
  var dependencies$2 = {
364
365
  "@mdx-js/mdx": "^3.1.1",
365
366
  "@standard-schema/spec": "^1.1.0",
367
+ "acorn": "^8.19.0",
368
+ "acorn-jsx": "^5.3.2",
366
369
  "chokidar": "^6.0.0",
367
370
  "esbuild": "^0.28.2",
368
371
  "estree-util-value-to-estree": "^3.5.0",
369
372
  "github-slugger": "^2.0.0",
370
- "magic-string": "^1.4.3",
373
+ "magic-string": "^1.4.5",
374
+ "mdast-util-from-markdown": "^2.1.0",
371
375
  "mdast-util-mdx": "^3.0.0",
376
+ "micromark-extension-mdxjs-esm": "^3.0.0",
372
377
  "picocolors": "^1.1.1",
373
378
  "picomatch": "^4.0.7",
374
379
  "tinyexec": "^1.3.1",
@@ -383,26 +388,26 @@ var dependencies$2 = {
383
388
  var devDependencies$2 = {
384
389
  "@fumadocs/satteri": "workspace:*",
385
390
  "@fumadocs/vite": "workspace:*",
386
- "@types/bun": "^1.4.3",
391
+ "@types/bun": "^1.4.4",
387
392
  "@types/mdast": "^4.0.4",
388
393
  "@types/mdx": "^2.0.14",
389
- "@types/node": "^26.6.5",
394
+ "@types/node": "^26.6.6",
390
395
  "@types/picomatch": "^4.0.3",
391
396
  "@types/react": "^19.3.0",
392
- "@vitejs/plugin-rsc": "^0.5.38",
397
+ "@vitejs/plugin-rsc": "^0.5.39",
393
398
  "fumadocs-core": "workspace:*",
394
- "mdast-util-directive": "^3.1.1",
395
- "next": "^16.4.2",
399
+ "mdast-util-directive": "^3.2.0",
400
+ "next": "^16.4.5",
396
401
  "react": "^19.3.1",
397
402
  "remark": "^15.0.1",
398
403
  "remark-directive": "^4.0.0",
399
404
  "remark-mdx": "^3.1.1",
400
- "rolldown": "^1.2.15",
401
- "satteri": "^0.10.5",
405
+ "rolldown": "~1.2.16",
406
+ "satteri": "^0.11.7",
402
407
  "tsconfig": "workspace:*",
403
- "tsdown": "0.23.1",
404
- "vite": "^8.3.5",
405
- "webpack": "^5.112.0"
408
+ "tsdown": "0.23.7",
409
+ "vite": "^8.3.6",
410
+ "webpack": "^5.112.2"
406
411
  };
407
412
  var peerDependencies$2 = {
408
413
  "@fumadocs/satteri": "0.x.x",
@@ -410,12 +415,12 @@ var peerDependencies$2 = {
410
415
  "@types/mdx": "*",
411
416
  "@types/react": "*",
412
417
  "@vitejs/plugin-rsc": "^0.5.34",
413
- "fumadocs-core": "^16.17.11",
418
+ "fumadocs-core": "^16.18.3",
414
419
  "mdast-util-directive": "*",
415
420
  "next": "^15.3.0 || ^16.0.0",
416
421
  "react": "^19.2.0",
417
422
  "rolldown": "*",
418
- "satteri": "^0.10.5",
423
+ "satteri": "^0.11.7",
419
424
  "vite": "7.x.x || 8.x.x"
420
425
  };
421
426
  var peerDependenciesMeta$2 = {
@@ -477,7 +482,7 @@ var package_exports$1 = /* @__PURE__ */ __exportAll({
477
482
  version: () => version$1
478
483
  });
479
484
  var name$1 = "@fumadocs/base-ui";
480
- var version$1 = "16.18.1";
485
+ var version$1 = "16.18.3";
481
486
  var description$1 = "The Base UI version of Fumadocs UI";
482
487
  var keywords$1 = ["Docs", "Fumadocs"];
483
488
  var homepage$1 = "https://fumadocs.dev";
@@ -612,29 +617,29 @@ var dependencies$1 = {
612
617
  "@fuma-translate/react": "^1.0.2",
613
618
  "@fumadocs/tailwind": "workspace:*",
614
619
  "class-variance-authority": "^0.7.1",
615
- "cn": "^0.5.0",
616
- "lucide-react": "^1.61.0",
617
- "motion": "^14.6.0",
620
+ "cn": "^0.5.2",
621
+ "lucide-react": "^1.70.0",
622
+ "motion": "^14.10.1",
618
623
  "next-themes": "^0.4.6",
619
624
  "react-remove-scroll": "^2.7.2",
620
625
  "scroll-into-view-if-needed": "^3.1.0",
621
- "shiki": "^4.5.0"
626
+ "shiki": "^4.6.0"
622
627
  };
623
628
  var devDependencies$1 = {
624
629
  "@fumadocs/cli": "workspace:*",
625
- "@tailwindcss/cli": "^4.3.3",
626
- "@tailwindcss/oxide": "^4.3.3",
627
- "@tsdown/css": "^0.23.1",
630
+ "@tailwindcss/cli": "^4.3.5",
631
+ "@tailwindcss/oxide": "^4.3.5",
632
+ "@tsdown/css": "^0.23.7",
628
633
  "@types/mdx": "^2.0.14",
629
- "@types/node": "^26.6.5",
634
+ "@types/node": "^26.6.6",
630
635
  "@types/react": "^19.3.0",
631
636
  "@types/react-dom": "^19.3.0",
632
637
  "fuma-cli": "^0.3.1",
633
638
  "fumadocs-core": "workspace:*",
634
639
  "react-medium-image-zoom": "^5.4.9",
635
- "tailwindcss": "^4.3.3",
640
+ "tailwindcss": "^4.3.5",
636
641
  "tsconfig": "workspace:*",
637
- "tsdown": "0.23.1"
642
+ "tsdown": "0.23.7"
638
643
  };
639
644
  var peerDependencies$1 = {
640
645
  "@types/mdx": "*",
@@ -696,7 +701,7 @@ var package_exports = /* @__PURE__ */ __exportAll({
696
701
  version: () => version
697
702
  });
698
703
  var name = "@fumadocs/astro";
699
- var version = "0.2.1";
704
+ var version = "0.2.2";
700
705
  var description = "The Astro integration for Fumadocs";
701
706
  var keywords = [
702
707
  "Astro",
@@ -728,37 +733,38 @@ var scripts = {
728
733
  "types:check": "tsc --noEmit"
729
734
  };
730
735
  var dependencies = {
731
- "@astrojs/mdx": "^8.1.1",
736
+ "@astrojs/mdx": "^8.1.3",
732
737
  "@fumadocs/satteri": "workspace:^",
733
738
  "devalue": "^6.0.2",
734
- "satteri": "^0.10.5",
739
+ "satteri": "^0.11.7",
740
+ "yaml": "^2.9.1",
735
741
  "yuku-parser": "^0.19.0"
736
742
  };
737
743
  var devDependencies = {
738
- "@astrojs/markdown-satteri": "^0.4.5",
739
- "@astrojs/react": "^7.1.1",
744
+ "@astrojs/markdown-satteri": "^0.4.7",
745
+ "@astrojs/react": "^7.1.4",
740
746
  "@types/estree-jsx": "^1.0.5",
741
747
  "@types/hast": "^3.0.5",
742
748
  "@types/mdx": "^2.0.14",
743
- "@types/node": "26.6.5",
749
+ "@types/node": "26.6.6",
744
750
  "@types/react": "^19.3.0",
745
751
  "@types/react-dom": "^19.3.0",
746
- "astro": "^7.4.2",
752
+ "astro": "^7.4.7",
747
753
  "fumadocs-core": "workspace:*",
748
754
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
749
755
  "react": "^19.3.1",
750
756
  "react-dom": "^19.3.1",
751
757
  "tsconfig": "workspace:*",
752
- "tsdown": "0.23.1",
758
+ "tsdown": "0.23.7",
753
759
  "typescript": "^7.0.2",
754
- "vite": "^8.3.5",
755
- "vitest": "^5.0.5"
760
+ "vite": "^8.3.6",
761
+ "vitest": "^5.1.0"
756
762
  };
757
763
  var peerDependencies = {
758
764
  "@astrojs/react": "^7.0.0",
759
765
  "@types/mdx": "*",
760
766
  "astro": "^7.4.0",
761
- "fumadocs-core": "^16.17.8",
767
+ "fumadocs-core": "^16.18.3",
762
768
  "react": "^19.2.0",
763
769
  "react-dom": "^19.2.0"
764
770
  };
@@ -851,4 +857,4 @@ for (const workspace of workspaces) depVersions[workspace.name] = workspace.vers
851
857
  depVersions["fumadocs-ui"] = `npm:${name$1}@${version$1}`;
852
858
  export { templates as i, isCI as n, sourceDir as r, depVersions as t };
853
859
 
854
- //# sourceMappingURL=constants-BdBsNM0B.js.map
860
+ //# sourceMappingURL=constants-BXNeGyPA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants-BdBsNM0B.js","names":["corePkg","mdxPkg","basePkg","astroPkg","versionPkg.dependencies","basePkg.name","basePkg.version"],"sources":["../../create-app-versions/package.json","../../core/package.json","../../mdx/package.json","../../base-ui/package.json","../../astro/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';\nimport * as astroPkg from '../../astro/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: Content Collections',\n appDir: 'src',\n rootProviderPath: 'components/provider.tsx',\n },\n];\n\nconst workspaces = [corePkg, mdxPkg, basePkg, astroPkg];\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AKOA,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,QAAQ;EACR,kBAAkB;CACpB;AACF;AAEA,MAAM,aAAa;CAACA;CAASC;CAAQC;CAASC;AAAQ;AAEtD,MAAa,cAAcC;AAE3B,KAAK,MAAM,aAAa,YACtB,YAAY,UAAU,QAAoC,UAAU;AAGtE,YAAY,iBAAiB,OAAOC,OAAa,GAAGC"}
1
+ {"version":3,"file":"constants-BXNeGyPA.js","names":["corePkg","mdxPkg","basePkg","astroPkg","versionPkg.dependencies","basePkg.name","basePkg.version"],"sources":["../../create-app-versions/package.json","../../core/package.json","../../mdx/package.json","../../base-ui/package.json","../../astro/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';\nimport * as astroPkg from '../../astro/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: Content Collections',\n appDir: 'src',\n rootProviderPath: 'components/provider.tsx',\n },\n];\n\nconst workspaces = [corePkg, mdxPkg, basePkg, astroPkg];\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AKOA,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,QAAQ;EACR,kBAAkB;CACpB;AACF;AAEA,MAAM,aAAa;CAACA;CAASC;CAAQC;CAASC;AAAQ;AAEtD,MAAa,cAAcC;AAE3B,KAAK,MAAM,aAAa,YACtB,YAAY,UAAU,QAAoC,UAAU;AAGtE,YAAY,iBAAiB,OAAOC,OAAa,GAAGC"}
@@ -1,4 +1,4 @@
1
- import { t as depVersions } from "./constants-BdBsNM0B.js";
1
+ import { t as depVersions } from "./constants-BXNeGyPA.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";
@@ -23,4 +23,4 @@ function feature(feature, options) {
23
23
  }
24
24
  export { feature as t };
25
25
 
26
- //# sourceMappingURL=feature-D7DCQAt1.js.map
26
+ //# sourceMappingURL=feature-BSyhSuG1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-D7DCQAt1.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-BSyhSuG1.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 +1 @@
1
- export { t as create } from "./src-DO8uM-EW.js";
1
+ export { t as create } from "./src-55Opr41I.js";
@@ -1 +1 @@
1
- export { t as feature } from "../feature-D7DCQAt1.js";
1
+ export { t as feature } from "../feature-BSyhSuG1.js";
@@ -1,4 +1,4 @@
1
- import { i as templates, r as sourceDir, t as depVersions } from "./constants-BdBsNM0B.js";
1
+ import { i as templates, r as sourceDir, t as depVersions } from "./constants-BXNeGyPA.js";
2
2
  import fs from "node:fs/promises";
3
3
  import path, { join } from "node:path";
4
4
  import { x } from "tinyexec";
@@ -142,4 +142,4 @@ async function initPackageJson(projectName, packageJsonPath) {
142
142
  }
143
143
  export { getPackageManager as n, managers as r, create as t };
144
144
 
145
- //# sourceMappingURL=src-DO8uM-EW.js.map
145
+ //# sourceMappingURL=src-55Opr41I.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"src-DO8uM-EW.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":";;;;;AAIA,MAAa,WAAW;CAAC;CAAO;CAAQ;CAAO;AAAM;AAErD,SAAgB,oBAAoC;CAClD,MAAM,YAAY,QAAQ,IAAI,yBAAyB;CAEvD,IAAI,UAAU,WAAW,MAAM,GAC7B,OAAO;CAGT,IAAI,UAAU,WAAW,MAAM,GAC7B,OAAO;CAGT,IAAI,UAAU,WAAW,KAAK,GAC5B,OAAO;CAGT,OAAO;AACT;AAEA,eAAsB,YAAY,SAAyB,MAAc;CACvE,MAAM,EAAE,SAAS,CAAC,SAAS,GAAG;EAC5B,cAAc;EACd,aAAa;GACX,KAAK;IACH,GAAG,QAAQ;IACX,UAAU;IACV,wBAAwB;GAC1B;GACA,KAAK;EACP;CACF,CAAC;AACH;;AChCA,eAAsB,KACpB,MACA,IACA,UAII,CAAC,GACU;CACf,MAAM,EAAE,UAAU,MAAM,GAAG,kBAAkB,MAAM,eAAe,SAAS;CAC3E,MAAM,QAAQ,MAAM,GAAG,KAAK,IAAI;CAEhC,IAAI,MAAM,YAAY,KAAK,UAAU,IAAI,GAAG;EAC1C,MAAM,QAAQ,MAAM,GAAG,QAAQ,IAAI;EAEnC,MAAM,QAAQ,IACZ,MAAM,KAAK,SAAS,KAAK,KAAK,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,CAC/E;CACF;CAEA,IAAI,MAAM,OAAO,KAAK,OAAO,IAAI,GAAG;EAClC,KAAK,OAAO,EAAE;EACd,MAAM,GAAG,MAAM,KAAK,QAAQ,EAAE,GAAG,EAAE,WAAW,KAAK,CAAC;EACpD,MAAM,GAAG,SAAS,MAAM,EAAE;CAC5B;AACF;AAEA,eAAe,kBAAkB,KAAa;CAC5C,MAAM,EAAE,aAAa,MAAM,EAAE,OAAO,CAAC,aAAa,uBAAuB,GAAG,EAC1E,aAAa,EAAE,IAAI,EACrB,CAAC;CAED,OAAO,aAAa;AACtB;AAEA,eAAe,mBAAmB,KAAa;CAC7C,MAAM,EAAE,aAAa,MAAM,EAAE,OAAO,CAAC,UAAU,oBAAoB,GAAG,EACpE,aAAa,EAAE,IAAI,EACrB,CAAC;CAED,OAAO,aAAa;AACtB;AAOA,eAAsB,WAAW,KAA+B;CAC9D,MAAM,EAAE,aAAa,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC;CACjD,IAAI,aAAa,GAAG,OAAO;CAE3B,IAAI,MAAM,kBAAkB,GAAG,GAAG,OAAO;CAEzC,IAAI;EACF,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG;GACvB,cAAc;GACd,aAAa,EAAE,IAAI;EACrB,CAAC;EAED,IAAI,CAAE,MAAM,mBAAmB,GAAG,GAChC,MAAM,EAAE,OAAO;GAAC;GAAY;GAAM;EAAM,GAAG;GACzC,cAAc;GACd,aAAa,EACX,IACF;EACF,CAAC;EAGH,MAAM,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG;GAC5B,cAAc;GACd,aAAa,EACX,IACF;EACF,CAAC;EAED,MAAM,EAAE,OAAO;GAAC;GAAU;GAAM;EAAyC,GAAG;GAC1E,cAAc;GACd,aAAa,EACX,IACF;EACF,CAAC;EACD,OAAO;CACT,QAAQ;EACN,MAAM,GAAG,GAAG,KAAK,KAAK,MAAM,GAAG;GAAE,WAAW;GAAM,OAAO;EAAK,CAAC;EAE/D,OAAO;CACT;AACF;;AC7BA,eAAsB,OAAO,eAAuC;CAClE,MAAM,EACJ,WACA,UAAU,CAAC,GACX,iBAAiB,OACjB,gBAAgB,OAChB,cAAc,OACd,MAAM,QAAQ,QACZ;CAEJ,IAAI,WAAW,UAAU,MAAM,SAAS,KAAK,UAAU,cAAc,QAAQ;CAC7E,KAAK,MAAM,UAAU,SACnB,WAAY,MAAM,OAAO,UAAU,KAAK,EAAE,MAAM,UAAU,GAAG,QAAQ,KAAM;CAG7E,MAAM,SAAS,KAAK,KAAK,WAAW,SAAS,MAAM;CACnD,MAAM,cAAc,KAAK,SAAS,SAAS;CAC3C,MAAM,gBAAuC;EAC3C;EACA,MAAM;EACN;EACA;CACF;CAEA,MAAM,KAAK,KAAK,KAAK,WAAW,YAAY,SAAS,KAAK,GAAG,WAAW,EACtE,OAAO,MAAM;EACX,OAAO,KAAK,QAAQ,qBAAqB,YAAY;EAErD,OAAO,SAAS,SAAS,IAAI,KAAK;CACpC,EACF,CAAC;CAED,MAAM,kBAAkB,KAAK,KAAK,WAAW,cAAc;CAC3D,IAAI,cAAc,MAAM,gBAAgB,aAAa,eAAe;CACpE,KAAK,MAAM,UAAU,SACnB,cAAe,MAAM,OAAO,aAAa,KAAK,eAAe,WAAW,KAAM;CAEhF,MAAM,GAAG,UAAU,iBAAiB,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;CAExE,MAAM,aAAa,KAAK,KAAK,WAAW,WAAW;CACnD,IAAI,SAAS,KAAK,YAAY,MAAM,MAAM,GAAG,SAAS,UAAU;CAChE,KAAK,MAAM,UAAU,SACnB,SAAU,MAAM,OAAO,QAAQ,KAAK,eAAe,MAAM,KAAM;CAEjE,MAAM,GAAG,UAAU,YAAY,MAAM;CAErC,KAAK,MAAM,UAAU,SACnB,MAAM,OAAO,YAAY,KAAK,aAAa;CAG7C,IAAI,aACF,IAAI;EACF,MAAM,YAAY,gBAAgB,SAAS;EAC3C,IAAI,wBAAwB;CAC9B,SAAS,KAAK;EACZ,IAAI,mCAAmC,KAAK;CAC9C;CAGF,IAAI,iBAAkB,MAAM,WAAW,SAAS,GAC9C,IAAI,4BAA4B;AAEpC;AAEA,eAAe,gBACb,aACA,iBAC0B;CAC1B,SAAS,qBAAqB,OAA+B,CAAC,GAAG;EAC/D,KAAK,MAAM,KAAK,MACd,IAAI,KAAK,EAAE,CAAC,WAAW,YAAY,KAAK,KAAK,aAC3C,KAAK,KAAK,YAAY;EAI1B,OAAO;CACT;CAEA,MAAM,cAA+B,KAAK,MAAM,MAAM,GAAG,SAAS,iBAAiB,OAAO,CAAC;CAC3F,MAAM,eAAe,qBAAqB,YAAY,YAAY;CAClE,MAAM,kBAAkB,qBAAqB,YAAY,eAAe;CACxE,MAAM,UAAU,EAAE,GAAG,YAAY,QAAQ;CAEzC,OAAO;EACL,GAAG;EACH,MAAM;EACN;EACA;EACA;CACF;AACF"}
1
+ {"version":3,"file":"src-55Opr41I.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.30",
3
+ "version": "16.2.32",
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.8.1",
43
+ "@fumadocs/cli": "1.8.3",
44
44
  "cac": "^7.1.0",
45
45
  "fuma-cli": "^0.3.1",
46
46
  "picocolors": "^1.1.1",
@@ -48,10 +48,10 @@
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/cross-spawn": "^6.0.6",
51
- "@types/node": "26.6.5",
51
+ "@types/node": "26.6.6",
52
52
  "tinyglobby": "^0.2.17",
53
53
  "tsconfig": "0.0.0",
54
- "tsdown": "0.23.1",
54
+ "tsdown": "0.23.7",
55
55
  "typescript": "^7.0.2"
56
56
  },
57
57
  "engines": {
@@ -29,7 +29,7 @@ export default async function Page(props: PageProps<'/docs/[[...slug]]'>) {
29
29
  <MarkdownCopyButton markdownUrl={markdownUrl} />
30
30
  <ViewOptionsPopover
31
31
  markdownUrl={markdownUrl}
32
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${page.path}`}
32
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(page.path)}`}
33
33
  />
34
34
  </div>
35
35
  <DocsBody>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-next",
3
- "version": "0.0.55",
3
+ "version": "0.0.57",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "build": "next build",
@@ -9,23 +9,23 @@
9
9
  "types:check": "next typegen && tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "cn": "^0.5.0",
12
+ "cn": "^0.5.2",
13
13
  "fumadocs-core": "workspace:*",
14
14
  "fumadocs-mdx": "workspace:*",
15
15
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
16
- "lucide-react": "^1.61.0",
17
- "next": "16.4.2",
16
+ "lucide-react": "^1.70.0",
17
+ "next": "16.4.5",
18
18
  "react": "^19.3.1",
19
19
  "react-dom": "^19.3.1"
20
20
  },
21
21
  "devDependencies": {
22
- "@tailwindcss/postcss": "^4.3.3",
22
+ "@tailwindcss/postcss": "^4.3.5",
23
23
  "@types/mdx": "^2.0.14",
24
- "@types/node": "^26.6.5",
24
+ "@types/node": "^26.6.6",
25
25
  "@types/react": "^19.3.0",
26
26
  "@types/react-dom": "^19.3.0",
27
- "postcss": "^8.5.31",
28
- "tailwindcss": "^4.3.3",
27
+ "postcss": "^8.5.32",
28
+ "tailwindcss": "^4.3.5",
29
29
  "typescript": "^7.0.2"
30
30
  }
31
31
  }
@@ -29,7 +29,7 @@ export default async function Page(props: PageProps<'/docs/[[...slug]]'>) {
29
29
  <MarkdownCopyButton markdownUrl={markdownUrl} />
30
30
  <ViewOptionsPopover
31
31
  markdownUrl={markdownUrl}
32
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${page.path}`}
32
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(page.path)}`}
33
33
  />
34
34
  </div>
35
35
  <DocsBody>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-next-static",
3
- "version": "0.0.55",
3
+ "version": "0.0.57",
4
4
  "private": true,
5
5
  "scripts": {
6
6
  "build": "next build",
@@ -9,24 +9,24 @@
9
9
  "types:check": "next typegen && tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "cn": "^0.5.0",
12
+ "cn": "^0.5.2",
13
13
  "fumadocs-core": "workspace:*",
14
14
  "fumadocs-mdx": "workspace:*",
15
15
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
16
- "lucide-react": "^1.61.0",
17
- "next": "16.4.2",
16
+ "lucide-react": "^1.70.0",
17
+ "next": "16.4.5",
18
18
  "react": "^19.3.1",
19
19
  "react-dom": "^19.3.1"
20
20
  },
21
21
  "devDependencies": {
22
- "@tailwindcss/postcss": "^4.3.3",
22
+ "@tailwindcss/postcss": "^4.3.5",
23
23
  "@types/mdx": "^2.0.14",
24
- "@types/node": "^26.6.5",
24
+ "@types/node": "^26.6.6",
25
25
  "@types/react": "^19.3.0",
26
26
  "@types/react-dom": "^19.3.0",
27
- "postcss": "^8.5.31",
28
- "serve": "^14.2.6",
29
- "tailwindcss": "^4.3.3",
27
+ "postcss": "^8.5.32",
28
+ "serve": "^14.2.7",
29
+ "tailwindcss": "^4.3.5",
30
30
  "typescript": "^7.0.2"
31
31
  }
32
32
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "example-astro",
3
- "version": "0.0.51",
3
+ "version": "0.0.53",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -12,22 +12,22 @@
12
12
  "astro": "astro"
13
13
  },
14
14
  "dependencies": {
15
- "@astrojs/react": "^7.1.1",
15
+ "@astrojs/react": "^7.1.4",
16
16
  "@fumadocs/astro": "workspace:*",
17
- "astro": "^7.4.2",
17
+ "astro": "^7.4.7",
18
18
  "fumadocs-core": "workspace:*",
19
19
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
20
20
  "react": "^19.3.1",
21
21
  "react-dom": "^19.3.1",
22
22
  "sharp": "^0.35.5",
23
- "takumi-js": "^2.17.1"
23
+ "takumi-js": "^2.19.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@tailwindcss/vite": "^4.3.3",
26
+ "@tailwindcss/vite": "^4.3.5",
27
27
  "@types/mdx": "^2.0.14",
28
28
  "@types/react": "^19.3.0",
29
29
  "@types/react-dom": "^19.3.0",
30
- "tailwindcss": "^4.3.3",
30
+ "tailwindcss": "^4.3.5",
31
31
  "typescript": "^7.0.2"
32
32
  }
33
33
  }
@@ -36,7 +36,7 @@ const pageTree = await source.serializePageTree(source.getPageTree());
36
36
  description={page.data.description}
37
37
  toc={toc}
38
38
  markdownUrl={getPageMarkdownUrl(page).url}
39
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${page.path}`}
39
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(page.path)}`}
40
40
  >
41
41
  <Content />
42
42
  </Docs>
@@ -55,7 +55,7 @@ function Content({
55
55
  <MarkdownCopyButton markdownUrl={markdownUrl} />
56
56
  <ViewOptionsPopover
57
57
  markdownUrl={markdownUrl}
58
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${path}`}
58
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(path)}`}
59
59
  />
60
60
  </div>
61
61
  <DocsBody>
@@ -9,29 +9,29 @@
9
9
  "types:check": "react-router typegen && tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@react-router/node": "^8.5.0",
13
- "@react-router/serve": "^8.5.0",
14
- "cn": "^0.5.0",
12
+ "@react-router/node": "^8.5.1",
13
+ "@react-router/serve": "^8.5.1",
14
+ "cn": "^0.5.2",
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.61.0",
19
+ "lucide-react": "^1.70.0",
20
20
  "react": "^19.3.1",
21
21
  "react-dom": "^19.3.1",
22
- "react-router": "^8.5.0",
23
- "takumi-js": "^2.17.1"
22
+ "react-router": "^8.5.1",
23
+ "takumi-js": "^2.19.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@react-router/dev": "^8.5.0",
27
- "@tailwindcss/vite": "^4.3.3",
26
+ "@react-router/dev": "^8.5.1",
27
+ "@tailwindcss/vite": "^4.3.5",
28
28
  "@types/mdx": "^2.0.14",
29
- "@types/node": "^26.6.5",
29
+ "@types/node": "^26.6.6",
30
30
  "@types/react": "^19.3.0",
31
31
  "@types/react-dom": "^19.3.0",
32
32
  "react-router-devtools": "^6.2.3",
33
- "tailwindcss": "^4.3.3",
33
+ "tailwindcss": "^4.3.5",
34
34
  "typescript": "^7.0.2",
35
- "vite": "^8.3.5"
35
+ "vite": "^8.3.6"
36
36
  }
37
37
  }
@@ -55,7 +55,7 @@ function Content({
55
55
  <MarkdownCopyButton markdownUrl={markdownUrl} />
56
56
  <ViewOptionsPopover
57
57
  markdownUrl={markdownUrl}
58
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${path}`}
58
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(path)}`}
59
59
  />
60
60
  </div>
61
61
  <DocsBody>
@@ -9,29 +9,29 @@
9
9
  "types:check": "react-router typegen && tsc --noEmit"
10
10
  },
11
11
  "dependencies": {
12
- "@react-router/node": "^8.5.0",
13
- "cn": "^0.5.0",
12
+ "@react-router/node": "^8.5.1",
13
+ "cn": "^0.5.2",
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.61.0",
18
+ "lucide-react": "^1.70.0",
19
19
  "react": "^19.3.1",
20
20
  "react-dom": "^19.3.1",
21
- "react-router": "^8.5.0",
22
- "takumi-js": "^2.17.1"
21
+ "react-router": "^8.5.1",
22
+ "takumi-js": "^2.19.0"
23
23
  },
24
24
  "devDependencies": {
25
- "@react-router/dev": "^8.5.0",
26
- "@tailwindcss/vite": "^4.3.3",
25
+ "@react-router/dev": "^8.5.1",
26
+ "@tailwindcss/vite": "^4.3.5",
27
27
  "@types/mdx": "^2.0.14",
28
- "@types/node": "^26.6.5",
28
+ "@types/node": "^26.6.6",
29
29
  "@types/react": "^19.3.0",
30
30
  "@types/react-dom": "^19.3.0",
31
31
  "react-router-devtools": "^6.2.3",
32
- "serve": "^14.2.6",
33
- "tailwindcss": "^4.3.3",
32
+ "serve": "^14.2.7",
33
+ "tailwindcss": "^4.3.5",
34
34
  "typescript": "^7.0.2",
35
- "vite": "^8.3.5"
35
+ "vite": "^8.3.6"
36
36
  }
37
37
  }
@@ -11,28 +11,28 @@
11
11
  "types:check": "tsc --noEmit"
12
12
  },
13
13
  "dependencies": {
14
- "@tanstack/react-router": "1.170.45",
14
+ "@tanstack/react-router": "1.170.46",
15
15
  "@tanstack/react-router-devtools": "1.167.2",
16
- "@tanstack/react-start": "1.169.3",
17
- "cn": "^0.5.0",
16
+ "@tanstack/react-start": "1.169.4",
17
+ "cn": "^0.5.2",
18
18
  "fumadocs-core": "workspace:*",
19
19
  "fumadocs-mdx": "workspace:*",
20
20
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
21
- "lucide-react": "^1.61.0",
21
+ "lucide-react": "^1.70.0",
22
22
  "react": "^19.3.1",
23
23
  "react-dom": "^19.3.1",
24
- "takumi-js": "^2.17.1"
24
+ "takumi-js": "^2.19.0"
25
25
  },
26
26
  "devDependencies": {
27
- "@tailwindcss/vite": "^4.3.3",
27
+ "@tailwindcss/vite": "^4.3.5",
28
28
  "@types/mdx": "^2.0.14",
29
- "@types/node": "^26.6.5",
29
+ "@types/node": "^26.6.6",
30
30
  "@types/react": "^19.3.0",
31
31
  "@types/react-dom": "^19.3.0",
32
- "@vitejs/plugin-react": "^6.1.2",
33
- "nitro": "3.0.260903-beta",
34
- "tailwindcss": "^4.3.3",
32
+ "@vitejs/plugin-react": "^6.2.1",
33
+ "nitro": "3.0.261103-rc",
34
+ "tailwindcss": "^4.3.5",
35
35
  "typescript": "^7.0.2",
36
- "vite": "^8.3.5"
36
+ "vite": "^8.3.6"
37
37
  }
38
38
  }
@@ -60,7 +60,7 @@ function Content({ path, markdownUrl }: { path: string; markdownUrl: string }) {
60
60
  <MarkdownCopyButton markdownUrl={markdownUrl} />
61
61
  <ViewOptionsPopover
62
62
  markdownUrl={markdownUrl}
63
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${path}`}
63
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(path)}`}
64
64
  />
65
65
  </div>
66
66
  <DocsBody>
@@ -11,31 +11,31 @@
11
11
  "types:check": "tsc --noEmit"
12
12
  },
13
13
  "dependencies": {
14
- "@tanstack/react-router": "1.170.45",
14
+ "@tanstack/react-router": "1.170.46",
15
15
  "@tanstack/react-router-devtools": "1.167.2",
16
- "@tanstack/react-start": "1.169.3",
17
- "@tanstack/start-static-server-functions": "1.167.43",
18
- "cn": "^0.5.0",
16
+ "@tanstack/react-start": "1.169.4",
17
+ "@tanstack/start-static-server-functions": "1.167.44",
18
+ "cn": "^0.5.2",
19
19
  "fumadocs-core": "workspace:*",
20
20
  "fumadocs-mdx": "workspace:*",
21
21
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
22
- "lucide-react": "^1.61.0",
22
+ "lucide-react": "^1.70.0",
23
23
  "react": "^19.3.1",
24
24
  "react-dom": "^19.3.1",
25
- "takumi-js": "^2.17.1"
25
+ "takumi-js": "^2.19.0"
26
26
  },
27
27
  "devDependencies": {
28
- "@tailwindcss/vite": "^4.3.3",
28
+ "@tailwindcss/vite": "^4.3.5",
29
29
  "@types/mdx": "^2.0.14",
30
- "@types/node": "^26.6.5",
30
+ "@types/node": "^26.6.6",
31
31
  "@types/react": "^19.3.0",
32
32
  "@types/react-dom": "^19.3.0",
33
- "@vitejs/plugin-react": "^6.1.2",
34
- "nitro": "3.0.260903-beta",
35
- "serve": "^14.2.6",
36
- "srvx": "^1.0.6",
37
- "tailwindcss": "^4.3.3",
33
+ "@vitejs/plugin-react": "^6.2.1",
34
+ "nitro": "3.0.261103-rc",
35
+ "serve": "^14.2.7",
36
+ "srvx": "^1.0.8",
37
+ "tailwindcss": "^4.3.5",
38
38
  "typescript": "^7.0.2",
39
- "vite": "^8.3.5"
39
+ "vite": "^8.3.6"
40
40
  }
41
41
  }
@@ -62,7 +62,7 @@ function Content({ path, markdownUrl }: { path: string; markdownUrl: string }) {
62
62
  <MarkdownCopyButton markdownUrl={markdownUrl} />
63
63
  <ViewOptionsPopover
64
64
  markdownUrl={markdownUrl}
65
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${path}`}
65
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(path)}`}
66
66
  />
67
67
  </div>
68
68
  <DocsBody>
@@ -10,25 +10,25 @@
10
10
  "types:check": "tsc --noEmit"
11
11
  },
12
12
  "dependencies": {
13
- "cn": "^0.5.0",
13
+ "cn": "^0.5.2",
14
14
  "fumadocs-core": "workspace:*",
15
15
  "fumadocs-mdx": "workspace:*",
16
16
  "fumadocs-ui": "workspace:@fumadocs/base-ui@*",
17
- "lucide-react": "^1.61.0",
17
+ "lucide-react": "^1.70.0",
18
18
  "react": "^19.3.1",
19
19
  "react-dom": "^19.3.1",
20
20
  "react-server-dom-webpack": "^19.3.1",
21
- "takumi-js": "^2.17.1",
21
+ "takumi-js": "^2.19.0",
22
22
  "waku": "1.0.0-rc.4"
23
23
  },
24
24
  "devDependencies": {
25
- "@tailwindcss/vite": "^4.3.3",
25
+ "@tailwindcss/vite": "^4.3.5",
26
26
  "@types/mdx": "^2.0.14",
27
- "@types/node": "^26.6.5",
27
+ "@types/node": "^26.6.6",
28
28
  "@types/react": "^19.3.0",
29
29
  "@types/react-dom": "^19.3.0",
30
- "tailwindcss": "^4.3.3",
30
+ "tailwindcss": "^4.3.5",
31
31
  "typescript": "^7.0.2",
32
- "vite": "^8.3.5"
32
+ "vite": "^8.3.6"
33
33
  }
34
34
  }
@@ -28,7 +28,7 @@ export default function Page({ slugs }: PageProps<'/docs/[...slugs]'>) {
28
28
  <MarkdownCopyButton markdownUrl={markdownUrl} />
29
29
  <ViewOptionsPopover
30
30
  markdownUrl={markdownUrl}
31
- githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${page.path}`}
31
+ githubUrl={`https://github.com/${gitConfig.user}/${gitConfig.repo}/blob/${gitConfig.branch}/content/docs/${encodeURI(page.path)}`}
32
32
  />
33
33
  </div>
34
34
  <DocsBody>