fumadocs-core 16.4.6 → 16.4.8

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.
Files changed (255) hide show
  1. package/dist/{advanced-tbtFDsHU.js → advanced-BiZjLx5X.js} +3 -4
  2. package/dist/{algolia-B9GvomyW.d.ts → algolia-DWUn4vqa.d.ts} +2 -3
  3. package/dist/{algolia-Dbt0kj8j.js → algolia-IT2aRQE6.js} +2 -3
  4. package/dist/breadcrumb.d.ts +2 -3
  5. package/dist/breadcrumb.js +3 -4
  6. package/dist/{codeblock-utils-CdA7nXLP.d.ts → codeblock-utils-DA5Ql7wp.d.ts} +1 -2
  7. package/dist/content/github.d.ts +1 -2
  8. package/dist/content/github.js +1 -2
  9. package/dist/content/index.d.ts +3 -4
  10. package/dist/content/index.js +1 -2
  11. package/dist/content/mdx/preset-bundler.d.ts +9 -10
  12. package/dist/content/mdx/preset-bundler.js +2 -3
  13. package/dist/content/mdx/preset-runtime.d.ts +9 -10
  14. package/dist/content/mdx/preset-runtime.js +2 -3
  15. package/dist/content/toc.d.ts +1 -2
  16. package/dist/content/toc.js +2 -3
  17. package/dist/{definitions-Ca2P2viV.d.ts → definitions-fBNEDML4.d.ts} +1 -2
  18. package/dist/dynamic-link.d.ts +1 -2
  19. package/dist/dynamic-link.js +1 -2
  20. package/dist/{fetch-CiphcAUR.js → fetch-B9AxBORJ.js} +1 -2
  21. package/dist/framework/index.d.ts +5 -6
  22. package/dist/framework/index.js +1 -2
  23. package/dist/framework/next.d.ts +3 -4
  24. package/dist/framework/next.js +1 -2
  25. package/dist/framework/react-router.d.ts +3 -4
  26. package/dist/framework/react-router.js +1 -2
  27. package/dist/framework/tanstack.d.ts +3 -4
  28. package/dist/framework/tanstack.js +1 -2
  29. package/dist/framework/waku.d.ts +3 -4
  30. package/dist/framework/waku.js +1 -2
  31. package/dist/highlight/client.d.ts +2 -3
  32. package/dist/highlight/client.js +2 -3
  33. package/dist/highlight/index.d.ts +1 -1
  34. package/dist/highlight/index.js +1 -1
  35. package/dist/i18n/index.d.ts +1 -1
  36. package/dist/i18n/index.js +1 -2
  37. package/dist/i18n/middleware.d.ts +2 -3
  38. package/dist/i18n/middleware.js +1 -2
  39. package/dist/{icon-CL3r1pNG.js → icon-D9W4ODUt.js} +1 -2
  40. package/dist/{index-k5KwKJ_c.d.ts → index-Bn_dIR1t.d.ts} +6 -6
  41. package/dist/{index-DxhhLscI.d.ts → index-CNd0mkPr.d.ts} +1 -2
  42. package/dist/index-DbVQNAN8.d.ts +44 -0
  43. package/dist/index-Skpc1DNd.d.ts +18 -0
  44. package/dist/link.d.ts +3 -4
  45. package/dist/link.js +1 -2
  46. package/dist/{mdast-utils-B8O-41y4.js → mdast-utils-BqE5966y.js} +1 -2
  47. package/dist/mdx-plugins/codeblock-utils.d.ts +1 -1
  48. package/dist/mdx-plugins/codeblock-utils.js +1 -2
  49. package/dist/mdx-plugins/index.d.ts +15 -15
  50. package/dist/mdx-plugins/index.js +4 -4
  51. package/dist/mdx-plugins/rehype-code.d.ts +1 -1
  52. package/dist/mdx-plugins/rehype-code.js +2 -2
  53. package/dist/mdx-plugins/rehype-toc.d.ts +1 -1
  54. package/dist/mdx-plugins/rehype-toc.js +1 -1
  55. package/dist/mdx-plugins/remark-admonition.d.ts +1 -1
  56. package/dist/mdx-plugins/remark-admonition.js +2 -3
  57. package/dist/mdx-plugins/remark-code-tab.d.ts +1 -1
  58. package/dist/mdx-plugins/remark-code-tab.js +1 -2
  59. package/dist/mdx-plugins/remark-directive-admonition.d.ts +1 -1
  60. package/dist/mdx-plugins/remark-directive-admonition.js +1 -2
  61. package/dist/mdx-plugins/remark-feedback-block.d.ts +1 -1
  62. package/dist/mdx-plugins/remark-feedback-block.js +2 -3
  63. package/dist/mdx-plugins/remark-gfm.d.ts +1 -1
  64. package/dist/mdx-plugins/remark-heading.d.ts +1 -1
  65. package/dist/mdx-plugins/remark-heading.js +2 -3
  66. package/dist/mdx-plugins/remark-image.d.ts +1 -1
  67. package/dist/mdx-plugins/remark-image.js +1 -2
  68. package/dist/mdx-plugins/remark-mdx-files.d.ts +1 -1
  69. package/dist/mdx-plugins/remark-mdx-files.js +1 -2
  70. package/dist/mdx-plugins/remark-mdx-mermaid.d.ts +1 -1
  71. package/dist/mdx-plugins/remark-mdx-mermaid.js +1 -2
  72. package/dist/mdx-plugins/remark-npm.d.ts +1 -1
  73. package/dist/mdx-plugins/remark-npm.js +1 -2
  74. package/dist/mdx-plugins/remark-steps.d.ts +1 -1
  75. package/dist/mdx-plugins/remark-steps.js +1 -2
  76. package/dist/mdx-plugins/remark-structure.d.ts +1 -1
  77. package/dist/mdx-plugins/remark-structure.js +2 -3
  78. package/dist/{mixedbread-B0TvOHtt.js → mixedbread-B4x0e8AJ.js} +6 -5
  79. package/dist/negotiation/index.d.ts +1 -2
  80. package/dist/negotiation/index.js +1 -2
  81. package/dist/{normalize-url-CEfNKxaE.js → normalize-url-D88zV54r.js} +1 -2
  82. package/dist/{orama-cloud-yicpgD0c.js → orama-cloud-CiI54EU9.js} +3 -4
  83. package/dist/{orama-cloud-legacy-NJTbB19B.js → orama-cloud-legacy-DG0asrcn.js} +3 -4
  84. package/dist/page-tree/index.d.ts +3 -45
  85. package/dist/page-tree/index.js +1 -1
  86. package/dist/{path-CECfI3nn.js → path-B48ZWv8k.js} +2 -3
  87. package/dist/{rehype-code-Ct5Pb6BZ.js → rehype-code-8Te7jiPm.js} +2 -3
  88. package/dist/{rehype-code-BUrju-yF.d.ts → rehype-code-9wJ_hsjl.d.ts} +1 -2
  89. package/dist/{rehype-toc-Dcgzd_Vy.d.ts → rehype-toc-Bt9Ng_4w.d.ts} +1 -2
  90. package/dist/{rehype-toc-CTG0x7La.js → rehype-toc-CRXB92Tc.js} +1 -2
  91. package/dist/{remark-admonition-BvgS4oU1.d.ts → remark-admonition-DVevS9Wn.d.ts} +1 -2
  92. package/dist/{remark-code-tab-Ds_BdYXz.d.ts → remark-code-tab-DwGhoHpj.d.ts} +1 -2
  93. package/dist/{remark-directive-admonition-02cR5K1L.d.ts → remark-directive-admonition-DA7-ewEx.d.ts} +1 -2
  94. package/dist/{remark-feedback-block-fAyt4LdQ.d.ts → remark-feedback-block-PpERWDdJ.d.ts} +1 -2
  95. package/dist/{remark-heading-CSButCYt.d.ts → remark-heading-B02bkQ09.d.ts} +1 -2
  96. package/dist/{remark-image-C3MnP-3r.d.ts → remark-image-k8SDn3Hf.d.ts} +1 -2
  97. package/dist/{remark-mdx-files-BXUiiX3M.d.ts → remark-mdx-files-DXQKQsPS.d.ts} +1 -2
  98. package/dist/{remark-mdx-mermaid-C5ZBxx8x.d.ts → remark-mdx-mermaid-CzeZXfYX.d.ts} +1 -2
  99. package/dist/{remark-npm-DADZg0pf.d.ts → remark-npm-DS3cHDxB.d.ts} +1 -2
  100. package/dist/{remark-steps-CWEE34cT.d.ts → remark-steps-Bz-6C0tE.d.ts} +1 -2
  101. package/dist/{remark-structure-ChKxMXnK.d.ts → remark-structure-dZprfvCG.d.ts} +1 -2
  102. package/dist/{remove-undefined-Buxsprgu.js → remove-undefined-CiwokjLP.js} +1 -2
  103. package/dist/search/algolia.d.ts +2 -2
  104. package/dist/search/algolia.js +1 -2
  105. package/dist/search/client.d.ts +8 -7
  106. package/dist/search/client.js +7 -8
  107. package/dist/search/index.d.ts +1 -2
  108. package/dist/search/index.js +1 -1
  109. package/dist/search/orama-cloud-legacy.d.ts +6 -7
  110. package/dist/search/orama-cloud-legacy.js +1 -2
  111. package/dist/search/orama-cloud.d.ts +6 -7
  112. package/dist/search/orama-cloud.js +1 -2
  113. package/dist/search/server.d.ts +6 -4
  114. package/dist/search/server.js +5 -6
  115. package/dist/{search-DzqmOjzV.js → search-CBAFoCmV.js} +1 -2
  116. package/dist/{server-CjGgVKx_.d.ts → server-BqqfVZaS.d.ts} +4 -5
  117. package/dist/{shiki-B4NO99XD.js → shiki-BMakKE6A.js} +1 -2
  118. package/dist/{shiki-vKy7H_iw.d.ts → shiki-BjMLCq9L.d.ts} +1 -2
  119. package/dist/source/client/index.d.ts +4 -18
  120. package/dist/source/client/index.js +21 -12
  121. package/dist/source/index.d.ts +4 -2
  122. package/dist/source/index.js +118 -66
  123. package/dist/source/plugins/lucide-icons.d.ts +5 -4
  124. package/dist/source/plugins/lucide-icons.js +2 -3
  125. package/dist/source/plugins/slugs.d.ts +4 -2
  126. package/dist/source/plugins/slugs.js +2 -3
  127. package/dist/source/plugins/status-badges.d.ts +53 -0
  128. package/dist/source/plugins/status-badges.js +54 -0
  129. package/dist/source/schema.d.ts +1 -2
  130. package/dist/source/schema.js +1 -2
  131. package/dist/{static-C_WBOzek.js → static-Dg4_dKaf.js} +2 -3
  132. package/dist/toc.d.ts +1 -2
  133. package/dist/toc.js +1 -2
  134. package/dist/{util-d5FlPx1Z.d.ts → util-C1pcIt82.d.ts} +1 -2
  135. package/dist/{util-Dn-wseQ5.js → util-E8U2ttCR.js} +1 -2
  136. package/dist/utils/use-effect-event.d.ts +1 -2
  137. package/dist/utils/use-effect-event.js +1 -2
  138. package/dist/utils/use-media-query.d.ts +1 -2
  139. package/dist/utils/use-media-query.js +1 -2
  140. package/dist/utils/use-on-change.d.ts +1 -2
  141. package/dist/utils/use-on-change.js +1 -2
  142. package/dist/{utils-D10VxgVc.js → utils-BllAiz19.js} +1 -2
  143. package/package.json +14 -14
  144. package/dist/advanced-tbtFDsHU.js.map +0 -1
  145. package/dist/algolia-B9GvomyW.d.ts.map +0 -1
  146. package/dist/algolia-Dbt0kj8j.js.map +0 -1
  147. package/dist/breadcrumb.d.ts.map +0 -1
  148. package/dist/breadcrumb.js.map +0 -1
  149. package/dist/codeblock-utils-CdA7nXLP.d.ts.map +0 -1
  150. package/dist/content/github.d.ts.map +0 -1
  151. package/dist/content/github.js.map +0 -1
  152. package/dist/content/index.d.ts.map +0 -1
  153. package/dist/content/index.js.map +0 -1
  154. package/dist/content/mdx/preset-bundler.d.ts.map +0 -1
  155. package/dist/content/mdx/preset-bundler.js.map +0 -1
  156. package/dist/content/mdx/preset-runtime.d.ts.map +0 -1
  157. package/dist/content/mdx/preset-runtime.js.map +0 -1
  158. package/dist/content/toc.d.ts.map +0 -1
  159. package/dist/content/toc.js.map +0 -1
  160. package/dist/definitions-Ca2P2viV.d.ts.map +0 -1
  161. package/dist/dynamic-link.d.ts.map +0 -1
  162. package/dist/dynamic-link.js.map +0 -1
  163. package/dist/fetch-CiphcAUR.js.map +0 -1
  164. package/dist/framework/index.d.ts.map +0 -1
  165. package/dist/framework/index.js.map +0 -1
  166. package/dist/framework/next.d.ts.map +0 -1
  167. package/dist/framework/next.js.map +0 -1
  168. package/dist/framework/react-router.d.ts.map +0 -1
  169. package/dist/framework/react-router.js.map +0 -1
  170. package/dist/framework/tanstack.d.ts.map +0 -1
  171. package/dist/framework/tanstack.js.map +0 -1
  172. package/dist/framework/waku.d.ts.map +0 -1
  173. package/dist/framework/waku.js.map +0 -1
  174. package/dist/highlight/client.d.ts.map +0 -1
  175. package/dist/highlight/client.js.map +0 -1
  176. package/dist/i18n/index.js.map +0 -1
  177. package/dist/i18n/middleware.d.ts.map +0 -1
  178. package/dist/i18n/middleware.js.map +0 -1
  179. package/dist/icon-CL3r1pNG.js.map +0 -1
  180. package/dist/index-DxhhLscI.d.ts.map +0 -1
  181. package/dist/index-k5KwKJ_c.d.ts.map +0 -1
  182. package/dist/link.d.ts.map +0 -1
  183. package/dist/link.js.map +0 -1
  184. package/dist/mdast-utils-B8O-41y4.js.map +0 -1
  185. package/dist/mdx-plugins/codeblock-utils.js.map +0 -1
  186. package/dist/mdx-plugins/remark-admonition.js.map +0 -1
  187. package/dist/mdx-plugins/remark-code-tab.js.map +0 -1
  188. package/dist/mdx-plugins/remark-directive-admonition.js.map +0 -1
  189. package/dist/mdx-plugins/remark-feedback-block.js.map +0 -1
  190. package/dist/mdx-plugins/remark-heading.js.map +0 -1
  191. package/dist/mdx-plugins/remark-image.js.map +0 -1
  192. package/dist/mdx-plugins/remark-mdx-files.js.map +0 -1
  193. package/dist/mdx-plugins/remark-mdx-mermaid.js.map +0 -1
  194. package/dist/mdx-plugins/remark-npm.js.map +0 -1
  195. package/dist/mdx-plugins/remark-steps.js.map +0 -1
  196. package/dist/mdx-plugins/remark-structure.js.map +0 -1
  197. package/dist/mixedbread-B0TvOHtt.js.map +0 -1
  198. package/dist/negotiation/index.d.ts.map +0 -1
  199. package/dist/negotiation/index.js.map +0 -1
  200. package/dist/normalize-url-CEfNKxaE.js.map +0 -1
  201. package/dist/orama-cloud-legacy-NJTbB19B.js.map +0 -1
  202. package/dist/orama-cloud-yicpgD0c.js.map +0 -1
  203. package/dist/page-tree/index.d.ts.map +0 -1
  204. package/dist/path-CECfI3nn.js.map +0 -1
  205. package/dist/rehype-code-BUrju-yF.d.ts.map +0 -1
  206. package/dist/rehype-code-Ct5Pb6BZ.js.map +0 -1
  207. package/dist/rehype-toc-CTG0x7La.js.map +0 -1
  208. package/dist/rehype-toc-Dcgzd_Vy.d.ts.map +0 -1
  209. package/dist/remark-admonition-BvgS4oU1.d.ts.map +0 -1
  210. package/dist/remark-code-tab-Ds_BdYXz.d.ts.map +0 -1
  211. package/dist/remark-directive-admonition-02cR5K1L.d.ts.map +0 -1
  212. package/dist/remark-feedback-block-fAyt4LdQ.d.ts.map +0 -1
  213. package/dist/remark-heading-CSButCYt.d.ts.map +0 -1
  214. package/dist/remark-image-C3MnP-3r.d.ts.map +0 -1
  215. package/dist/remark-mdx-files-BXUiiX3M.d.ts.map +0 -1
  216. package/dist/remark-mdx-mermaid-C5ZBxx8x.d.ts.map +0 -1
  217. package/dist/remark-npm-DADZg0pf.d.ts.map +0 -1
  218. package/dist/remark-steps-CWEE34cT.d.ts.map +0 -1
  219. package/dist/remark-structure-ChKxMXnK.d.ts.map +0 -1
  220. package/dist/remove-undefined-Buxsprgu.js.map +0 -1
  221. package/dist/search/algolia.js.map +0 -1
  222. package/dist/search/client.d.ts.map +0 -1
  223. package/dist/search/client.js.map +0 -1
  224. package/dist/search/index.d.ts.map +0 -1
  225. package/dist/search/orama-cloud-legacy.d.ts.map +0 -1
  226. package/dist/search/orama-cloud-legacy.js.map +0 -1
  227. package/dist/search/orama-cloud.d.ts.map +0 -1
  228. package/dist/search/orama-cloud.js.map +0 -1
  229. package/dist/search/server.js.map +0 -1
  230. package/dist/search-DzqmOjzV.js.map +0 -1
  231. package/dist/server-CjGgVKx_.d.ts.map +0 -1
  232. package/dist/shiki-B4NO99XD.js.map +0 -1
  233. package/dist/shiki-vKy7H_iw.d.ts.map +0 -1
  234. package/dist/source/client/index.d.ts.map +0 -1
  235. package/dist/source/client/index.js.map +0 -1
  236. package/dist/source/index.js.map +0 -1
  237. package/dist/source/plugins/lucide-icons.d.ts.map +0 -1
  238. package/dist/source/plugins/lucide-icons.js.map +0 -1
  239. package/dist/source/plugins/slugs.js.map +0 -1
  240. package/dist/source/schema.d.ts.map +0 -1
  241. package/dist/source/schema.js.map +0 -1
  242. package/dist/static-C_WBOzek.js.map +0 -1
  243. package/dist/toc.d.ts.map +0 -1
  244. package/dist/toc.js.map +0 -1
  245. package/dist/util-Dn-wseQ5.js.map +0 -1
  246. package/dist/util-d5FlPx1Z.d.ts.map +0 -1
  247. package/dist/utils/use-effect-event.d.ts.map +0 -1
  248. package/dist/utils/use-effect-event.js.map +0 -1
  249. package/dist/utils/use-media-query.d.ts.map +0 -1
  250. package/dist/utils/use-media-query.js.map +0 -1
  251. package/dist/utils/use-on-change.d.ts.map +0 -1
  252. package/dist/utils/use-on-change.js.map +0 -1
  253. package/dist/utils-D10VxgVc.js.map +0 -1
  254. /package/dist/{chunk-C9UIFEcR.js → chunk-CQNP8FC4.js} +0 -0
  255. /package/dist/{remark-gfm-jrvaEZw5.d.ts → remark-gfm-Cvcfjik1.d.ts} +0 -0
@@ -0,0 +1,53 @@
1
+ import { a as Separator$1, n as Item$1, t as Folder$1 } from "../../definitions-fBNEDML4.js";
2
+ import "../../index-DbVQNAN8.js";
3
+ import { s as LoaderPlugin } from "../../index-Bn_dIR1t.js";
4
+ import "../../index-Skpc1DNd.js";
5
+ import { ReactNode } from "react";
6
+
7
+ //#region src/source/plugins/status-badges.d.ts
8
+ interface Item extends Item$1 {
9
+ /**
10
+ * Status badge to display in the sidebar (e.g., "new", "beta", "deprecated", "experimental").
11
+ */
12
+ status?: string;
13
+ }
14
+ interface Folder extends Omit<Folder$1, 'children' | 'index'> {
15
+ index?: Item;
16
+ children: Node[];
17
+ }
18
+ type Separator = Separator$1;
19
+ type Node = Item | Folder | Separator;
20
+ /**
21
+ * Plugin to add status badges to pages in the sidebar.
22
+ *
23
+ * This reads the `status` field from page frontmatter and adds it to the page tree item.
24
+ * Define the `renderBadge` option to render it.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * import { loader } from 'fumadocs-core/source';
29
+ * import { statusBadgesPlugin } from 'fumadocs-core/source/status-badges';
30
+ *
31
+ * export const source = loader({
32
+ * plugins: [
33
+ * statusBadgesPlugin({
34
+ * renderBadge: (status) => <span>{status}</span>,
35
+ * }),
36
+ * ],
37
+ * // ...
38
+ * });
39
+ * ```
40
+ *
41
+ * Then in your frontmatter:
42
+ * ```yaml
43
+ * ---
44
+ * title: My Page
45
+ * status: new
46
+ * ---
47
+ * ```
48
+ */
49
+ declare function statusBadgesPlugin(options?: {
50
+ renderBadge?: (status: string) => ReactNode;
51
+ }): LoaderPlugin;
52
+ //#endregion
53
+ export { Folder, Item, Node, Separator, statusBadgesPlugin };
@@ -0,0 +1,54 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+
3
+ //#region src/source/plugins/status-badges.tsx
4
+ /**
5
+ * Plugin to add status badges to pages in the sidebar.
6
+ *
7
+ * This reads the `status` field from page frontmatter and adds it to the page tree item.
8
+ * Define the `renderBadge` option to render it.
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * import { loader } from 'fumadocs-core/source';
13
+ * import { statusBadgesPlugin } from 'fumadocs-core/source/status-badges';
14
+ *
15
+ * export const source = loader({
16
+ * plugins: [
17
+ * statusBadgesPlugin({
18
+ * renderBadge: (status) => <span>{status}</span>,
19
+ * }),
20
+ * ],
21
+ * // ...
22
+ * });
23
+ * ```
24
+ *
25
+ * Then in your frontmatter:
26
+ * ```yaml
27
+ * ---
28
+ * title: My Page
29
+ * status: new
30
+ * ---
31
+ * ```
32
+ */
33
+ function statusBadgesPlugin(options = {}) {
34
+ const { renderBadge = (status) => /* @__PURE__ */ jsx("span", {
35
+ "data-status": status,
36
+ children: status
37
+ }) } = options;
38
+ return {
39
+ name: "fumadocs:status-badges",
40
+ transformPageTree: { file(node, filePath) {
41
+ if (!filePath) return node;
42
+ const file = this.storage.read(filePath);
43
+ if (file?.format === "page" && "status" in file.data && typeof file.data.status === "string") {
44
+ const status = file.data.status;
45
+ node.name = /* @__PURE__ */ jsxs(Fragment, { children: [node.name, renderBadge(status)] });
46
+ node.status = status;
47
+ }
48
+ return node;
49
+ } }
50
+ };
51
+ }
52
+
53
+ //#endregion
54
+ export { statusBadgesPlugin };
@@ -25,5 +25,4 @@ declare const pageSchema: z.ZodObject<{
25
25
  _openapi: z.ZodOptional<z.ZodObject<{}, z.core.$loose>>;
26
26
  }, z.core.$strip>;
27
27
  //#endregion
28
- export { metaSchema, pageSchema };
29
- //# sourceMappingURL=schema.d.ts.map
28
+ export { metaSchema, pageSchema };
@@ -25,5 +25,4 @@ const pageSchema = z.object({
25
25
  });
26
26
 
27
27
  //#endregion
28
- export { metaSchema, pageSchema };
29
- //# sourceMappingURL=schema.js.map
28
+ export { metaSchema, pageSchema };
@@ -1,4 +1,4 @@
1
- import { n as searchSimple, t as searchAdvanced } from "./advanced-tbtFDsHU.js";
1
+ import { n as searchSimple, t as searchAdvanced } from "./advanced-BiZjLx5X.js";
2
2
  import { create, load } from "@orama/orama";
3
3
 
4
4
  //#region src/search/client/static.ts
@@ -47,5 +47,4 @@ async function search(query, options) {
47
47
  }
48
48
 
49
49
  //#endregion
50
- export { search };
51
- //# sourceMappingURL=static-C_WBOzek.js.map
50
+ export { search };
package/dist/toc.d.ts CHANGED
@@ -52,5 +52,4 @@ declare function TOCItem({
52
52
  ...props
53
53
  }: TOCItemProps): react_jsx_runtime0.JSX.Element;
54
54
  //#endregion
55
- export { AnchorProvider, AnchorProviderProps, ScrollProvider, ScrollProviderProps, TOCItem, TOCItemProps, TOCItemType, TableOfContents, useActiveAnchor, useActiveAnchors };
56
- //# sourceMappingURL=toc.d.ts.map
55
+ export { AnchorProvider, AnchorProviderProps, ScrollProvider, ScrollProviderProps, TOCItem, TOCItemProps, TOCItemType, TableOfContents, useActiveAnchor, useActiveAnchors };
package/dist/toc.js CHANGED
@@ -134,5 +134,4 @@ function useAnchorObserver(watch, single) {
134
134
  }
135
135
 
136
136
  //#endregion
137
- export { AnchorProvider, ScrollProvider, TOCItem, useActiveAnchor, useActiveAnchors };
138
- //# sourceMappingURL=toc.js.map
137
+ export { AnchorProvider, ScrollProvider, TOCItem, useActiveAnchor, useActiveAnchors };
@@ -4,5 +4,4 @@ import { Pluggable } from "unified";
4
4
  type Thenable<T> = T | PromiseLike<T>;
5
5
  type ResolvePlugins = Thenable<Pluggable>[] | ((v: Pluggable[]) => Thenable<Pluggable>[]);
6
6
  //#endregion
7
- export { ResolvePlugins as t };
8
- //# sourceMappingURL=util-d5FlPx1Z.d.ts.map
7
+ export { ResolvePlugins as t };
@@ -6,5 +6,4 @@ async function resolvePlugins(def, options = []) {
6
6
  }
7
7
 
8
8
  //#endregion
9
- export { resolvePlugins as t };
10
- //# sourceMappingURL=util-Dn-wseQ5.js.map
9
+ export { resolvePlugins as t };
@@ -7,5 +7,4 @@ type UseEffectEvent = <F extends (...params: never[]) => unknown>(callback: F) =
7
7
  */
8
8
  declare const useEffectEvent: UseEffectEvent;
9
9
  //#endregion
10
- export { useEffectEvent };
11
- //# sourceMappingURL=use-effect-event.d.ts.map
10
+ export { useEffectEvent };
@@ -15,5 +15,4 @@ const useEffectEvent = "useEffectEvent" in React ? { ...React }.useEffectEvent :
15
15
  };
16
16
 
17
17
  //#endregion
18
- export { useEffectEvent };
19
- //# sourceMappingURL=use-effect-event.js.map
18
+ export { useEffectEvent };
@@ -1,5 +1,4 @@
1
1
  //#region src/utils/use-media-query.d.ts
2
2
  declare function useMediaQuery(query: string, disabled?: boolean): boolean | null;
3
3
  //#endregion
4
- export { useMediaQuery };
5
- //# sourceMappingURL=use-media-query.d.ts.map
4
+ export { useMediaQuery };
@@ -19,5 +19,4 @@ function useMediaQuery(query, disabled = false) {
19
19
  }
20
20
 
21
21
  //#endregion
22
- export { useMediaQuery };
23
- //# sourceMappingURL=use-media-query.js.map
22
+ export { useMediaQuery };
@@ -6,5 +6,4 @@
6
6
  */
7
7
  declare function useOnChange<T>(value: T, onChange: (current: T, previous: T) => void, isUpdated?: (prev: T, current: T) => boolean): void;
8
8
  //#endregion
9
- export { useOnChange };
10
- //# sourceMappingURL=use-on-change.d.ts.map
9
+ export { useOnChange };
@@ -19,5 +19,4 @@ function useOnChange(value, onChange, isUpdated = isDifferent) {
19
19
  }
20
20
 
21
21
  //#endregion
22
- export { useOnChange };
23
- //# sourceMappingURL=use-on-change.js.map
22
+ export { useOnChange };
@@ -130,5 +130,4 @@ function visit(root, visitor) {
130
130
  }
131
131
 
132
132
  //#endregion
133
- export { flattenTree as a, visit as c, findSiblings as i, findParent as n, getPageTreePeers as o, findPath as r, getPageTreeRoots as s, findNeighbour as t };
134
- //# sourceMappingURL=utils-D10VxgVc.js.map
133
+ export { flattenTree as a, visit as c, findSiblings as i, findParent as n, getPageTreePeers as o, findPath as r, getPageTreeRoots as s, findNeighbour as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-core",
3
- "version": "16.4.6",
3
+ "version": "16.4.8",
4
4
  "description": "The React.js library for building a documentation website",
5
5
  "keywords": [
6
6
  "Docs",
@@ -112,7 +112,7 @@
112
112
  "access": "public"
113
113
  },
114
114
  "dependencies": {
115
- "@formatjs/intl-localematcher": "^0.7.5",
115
+ "@formatjs/intl-localematcher": "^0.8.0",
116
116
  "@orama/orama": "^3.1.18",
117
117
  "@shikijs/rehype": "^3.21.0",
118
118
  "@shikijs/transformers": "^3.21.0",
@@ -130,36 +130,36 @@
130
130
  "scroll-into-view-if-needed": "^3.1.0",
131
131
  "shiki": "^3.21.0",
132
132
  "tinyglobby": "^0.2.15",
133
- "unist-util-visit": "^5.0.0"
133
+ "unist-util-visit": "^5.1.0"
134
134
  },
135
135
  "devDependencies": {
136
136
  "@mdx-js/mdx": "^3.1.1",
137
- "@mixedbread/sdk": "^0.50.0",
137
+ "@mixedbread/sdk": "^0.50.1",
138
138
  "@orama/core": "^1.2.16",
139
139
  "@oramacloud/client": "^2.1.4",
140
- "@tanstack/react-router": "1.146.2",
140
+ "@tanstack/react-router": "1.154.13",
141
141
  "@types/estree-jsx": "^1.0.5",
142
142
  "@types/hast": "^3.0.4",
143
143
  "@types/mdast": "^4.0.4",
144
144
  "@types/negotiator": "^0.6.4",
145
- "@types/node": "25.0.3",
146
- "@types/react": "^19.2.7",
145
+ "@types/node": "25.0.10",
146
+ "@types/react": "^19.2.9",
147
147
  "@types/react-dom": "^19.2.3",
148
- "algoliasearch": "5.46.2",
149
- "lucide-react": "^0.562.0",
148
+ "algoliasearch": "5.47.0",
149
+ "lucide-react": "^0.563.0",
150
150
  "mdast-util-mdx-jsx": "^3.2.0",
151
151
  "mdast-util-mdxjs-esm": "^2.0.1",
152
- "next": "16.1.1",
152
+ "next": "16.1.4",
153
153
  "react-router": "^7.12.0",
154
154
  "remark-directive": "^4.0.0",
155
155
  "remark-mdx": "^3.1.1",
156
- "remove-markdown": "^0.6.2",
157
- "tsdown": "^0.18.4",
156
+ "remove-markdown": "^0.6.3",
157
+ "tsdown": "^0.19.0",
158
158
  "typescript": "^5.9.3",
159
159
  "unified": "^11.0.5",
160
160
  "vfile": "^6.0.3",
161
- "waku": "1.0.0-alpha.1",
162
- "zod": "^4.3.5",
161
+ "waku": "1.0.0-alpha.2",
162
+ "zod": "^4.3.6",
163
163
  "eslint-config-custom": "0.0.0",
164
164
  "tsconfig": "0.0.0"
165
165
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"advanced-tbtFDsHU.js","names":["list: SortedResult[]"],"sources":["../src/search/orama/search/simple.ts","../src/search/orama/search/advanced.ts"],"sourcesContent":["import { type Orama, search, type SearchParams } from '@orama/orama';\nimport { type SimpleDocument, type simpleSchema } from '@/search/orama/create-db';\nimport { createContentHighlighter, type SortedResult } from '@/search';\n\nexport async function searchSimple(\n db: Orama<typeof simpleSchema>,\n query: string,\n params: Partial<SearchParams<Orama<typeof simpleSchema>, SimpleDocument>> = {},\n): Promise<SortedResult[]> {\n const highlighter = createContentHighlighter(query);\n const result = await search(db, {\n term: query,\n tolerance: 1,\n ...params,\n boost: {\n title: 2,\n ...('boost' in params ? params.boost : undefined),\n },\n });\n\n return result.hits.map<SortedResult>((hit) => ({\n type: 'page',\n content: hit.document.title,\n breadcrumbs: hit.document.breadcrumbs,\n contentWithHighlights: highlighter.highlight(hit.document.title),\n id: hit.document.url,\n url: hit.document.url,\n }));\n}\n","import { getByID, type Orama, search, type SearchParams } from '@orama/orama';\nimport { type AdvancedDocument, type advancedSchema } from '@/search/orama/create-db';\nimport { removeUndefined } from '@/utils/remove-undefined';\nimport { createContentHighlighter, type SortedResult } from '@/search';\n\nexport async function searchAdvanced(\n db: Orama<typeof advancedSchema>,\n query: string,\n tag: string | string[] = [],\n {\n mode = 'fulltext',\n ...override\n }: Partial<SearchParams<Orama<typeof advancedSchema>, AdvancedDocument>> = {},\n): Promise<SortedResult[]> {\n if (typeof tag === 'string') tag = [tag];\n\n let params = {\n ...override,\n mode,\n where: removeUndefined({\n tags:\n tag.length > 0\n ? {\n containsAll: tag,\n }\n : undefined,\n ...override.where,\n }),\n groupBy: {\n properties: ['page_id'],\n maxResult: 8,\n ...override.groupBy,\n },\n } as SearchParams<typeof db, AdvancedDocument>;\n\n if (query.length > 0) {\n params = {\n ...params,\n term: query,\n properties: mode === 'fulltext' ? ['content'] : ['content', 'embeddings'],\n } as SearchParams<typeof db, AdvancedDocument>;\n }\n\n const highlighter = createContentHighlighter(query);\n const result = await search(db, params);\n const list: SortedResult[] = [];\n for (const item of result.groups ?? []) {\n const pageId = item.values[0] as string;\n\n const page = getByID(db, pageId);\n if (!page) continue;\n\n list.push({\n id: pageId,\n type: 'page',\n content: page.content,\n breadcrumbs: page.breadcrumbs,\n contentWithHighlights: highlighter.highlight(page.content),\n url: page.url,\n });\n\n for (const hit of item.result) {\n if (hit.document.type === 'page') continue;\n\n list.push({\n id: hit.document.id.toString(),\n content: hit.document.content,\n breadcrumbs: hit.document.breadcrumbs,\n contentWithHighlights: highlighter.highlight(hit.document.content),\n type: hit.document.type as SortedResult['type'],\n url: hit.document.url,\n });\n }\n }\n return list;\n}\n"],"mappings":";;;;;AAIA,eAAsB,aACpB,IACA,OACA,SAA4E,EAAE,EACrD;CACzB,MAAM,cAAc,yBAAyB,MAAM;AAWnD,SAVe,MAAM,OAAO,IAAI;EAC9B,MAAM;EACN,WAAW;EACX,GAAG;EACH,OAAO;GACL,OAAO;GACP,GAAI,WAAW,SAAS,OAAO,QAAQ;GACxC;EACF,CAAC,EAEY,KAAK,KAAmB,SAAS;EAC7C,MAAM;EACN,SAAS,IAAI,SAAS;EACtB,aAAa,IAAI,SAAS;EAC1B,uBAAuB,YAAY,UAAU,IAAI,SAAS,MAAM;EAChE,IAAI,IAAI,SAAS;EACjB,KAAK,IAAI,SAAS;EACnB,EAAE;;;;;ACtBL,eAAsB,eACpB,IACA,OACA,MAAyB,EAAE,EAC3B,EACE,OAAO,YACP,GAAG,aACsE,EAAE,EACpD;AACzB,KAAI,OAAO,QAAQ,SAAU,OAAM,CAAC,IAAI;CAExC,IAAI,SAAS;EACX,GAAG;EACH;EACA,OAAO,gBAAgB;GACrB,MACE,IAAI,SAAS,IACT,EACE,aAAa,KACd,GACD;GACN,GAAG,SAAS;GACb,CAAC;EACF,SAAS;GACP,YAAY,CAAC,UAAU;GACvB,WAAW;GACX,GAAG,SAAS;GACb;EACF;AAED,KAAI,MAAM,SAAS,EACjB,UAAS;EACP,GAAG;EACH,MAAM;EACN,YAAY,SAAS,aAAa,CAAC,UAAU,GAAG,CAAC,WAAW,aAAa;EAC1E;CAGH,MAAM,cAAc,yBAAyB,MAAM;CACnD,MAAM,SAAS,MAAM,OAAO,IAAI,OAAO;CACvC,MAAMA,OAAuB,EAAE;AAC/B,MAAK,MAAM,QAAQ,OAAO,UAAU,EAAE,EAAE;EACtC,MAAM,SAAS,KAAK,OAAO;EAE3B,MAAM,OAAO,QAAQ,IAAI,OAAO;AAChC,MAAI,CAAC,KAAM;AAEX,OAAK,KAAK;GACR,IAAI;GACJ,MAAM;GACN,SAAS,KAAK;GACd,aAAa,KAAK;GAClB,uBAAuB,YAAY,UAAU,KAAK,QAAQ;GAC1D,KAAK,KAAK;GACX,CAAC;AAEF,OAAK,MAAM,OAAO,KAAK,QAAQ;AAC7B,OAAI,IAAI,SAAS,SAAS,OAAQ;AAElC,QAAK,KAAK;IACR,IAAI,IAAI,SAAS,GAAG,UAAU;IAC9B,SAAS,IAAI,SAAS;IACtB,aAAa,IAAI,SAAS;IAC1B,uBAAuB,YAAY,UAAU,IAAI,SAAS,QAAQ;IAClE,MAAM,IAAI,SAAS;IACnB,KAAK,IAAI,SAAS;IACnB,CAAC;;;AAGN,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"algolia-B9GvomyW.d.ts","names":[],"sources":["../src/search/algolia.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,cAAA;;AAAjB;AA2BA;EAkBsB,GAAA,EAAA,MAAI;EAAS,KAAA,EAAA,MAAA;EAAwB,WAAA,CAAA,EAAA,MAAA;EAAc,WAAA,CAAA,EAAA,MAAA,EAAA;EAAO;AAMhF;AAyDA;EACU,GAAA,EAAA,MAAA;EAEG,UAAA,EAjGC,cAiGD;EACV;;AASH;;;;;;;UA9FiB,WAAA;;;;;;;;aASJ;;;;;;;;iBASS,IAAA,SAAa,wBAAwB,cAAc;iBAMnD,gBAAA,SAAyB,mCAAmC;iBAyD5D,eAAA,SACZ,6CAEG,mBACV;UASc,SAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"algolia-Dbt0kj8j.js","names":["grouped: SortedResult[]"],"sources":["../src/search/client/algolia.ts"],"sourcesContent":["import type { BaseIndex } from '@/search/algolia';\nimport type { Hit, LiteClient, SearchResponse } from 'algoliasearch/lite';\nimport { createContentHighlighter, type SortedResult } from '@/search';\n\nexport interface AlgoliaOptions {\n indexName: string;\n client: LiteClient;\n\n /**\n * Filter results with specific tag.\n */\n tag?: string;\n\n locale?: string;\n\n onSearch?: (\n query: string,\n tag?: string,\n locale?: string,\n ) => Promise<{\n results: SearchResponse<BaseIndex>[];\n }>;\n}\n\nexport function groupResults(hits: Hit<BaseIndex>[]): SortedResult[] {\n const grouped: SortedResult[] = [];\n const scannedUrls = new Set<string>();\n\n for (const hit of hits) {\n if (!scannedUrls.has(hit.url)) {\n scannedUrls.add(hit.url);\n\n grouped.push({\n id: hit.url,\n type: 'page',\n breadcrumbs: hit.breadcrumbs,\n url: hit.url,\n content: hit.title,\n });\n }\n\n grouped.push({\n id: hit.objectID,\n type: hit.content === hit.section ? 'heading' : 'text',\n url: hit.section_id ? `${hit.url}#${hit.section_id}` : hit.url,\n content: hit.content,\n });\n }\n\n return grouped;\n}\n\nexport async function searchDocs(\n query: string,\n { indexName, onSearch, client, locale, tag }: AlgoliaOptions,\n): Promise<SortedResult[]> {\n if (query.trim().length === 0) return [];\n\n const result = onSearch\n ? await onSearch(query, tag, locale)\n : await client.searchForHits<BaseIndex>({\n requests: [\n {\n type: 'default',\n indexName,\n query,\n distinct: 5,\n hitsPerPage: 10,\n filters: tag ? `tag:${tag}` : undefined,\n },\n ],\n });\n\n const highlighter = createContentHighlighter(query);\n return groupResults(result.results[0].hits).flatMap((hit) => {\n if (hit.type === 'page') {\n return {\n ...hit,\n contentWithHighlights: hit.contentWithHighlights ?? highlighter.highlight(hit.content),\n };\n }\n\n return [];\n });\n}\n"],"mappings":";;;AAwBA,SAAgB,aAAa,MAAwC;CACnE,MAAMA,UAA0B,EAAE;CAClC,MAAM,8BAAc,IAAI,KAAa;AAErC,MAAK,MAAM,OAAO,MAAM;AACtB,MAAI,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE;AAC7B,eAAY,IAAI,IAAI,IAAI;AAExB,WAAQ,KAAK;IACX,IAAI,IAAI;IACR,MAAM;IACN,aAAa,IAAI;IACjB,KAAK,IAAI;IACT,SAAS,IAAI;IACd,CAAC;;AAGJ,UAAQ,KAAK;GACX,IAAI,IAAI;GACR,MAAM,IAAI,YAAY,IAAI,UAAU,YAAY;GAChD,KAAK,IAAI,aAAa,GAAG,IAAI,IAAI,GAAG,IAAI,eAAe,IAAI;GAC3D,SAAS,IAAI;GACd,CAAC;;AAGJ,QAAO;;AAGT,eAAsB,WACpB,OACA,EAAE,WAAW,UAAU,QAAQ,QAAQ,OACd;AACzB,KAAI,MAAM,MAAM,CAAC,WAAW,EAAG,QAAO,EAAE;CAExC,MAAM,SAAS,WACX,MAAM,SAAS,OAAO,KAAK,OAAO,GAClC,MAAM,OAAO,cAAyB,EACpC,UAAU,CACR;EACE,MAAM;EACN;EACA;EACA,UAAU;EACV,aAAa;EACb,SAAS,MAAM,OAAO,QAAQ;EAC/B,CACF,EACF,CAAC;CAEN,MAAM,cAAc,yBAAyB,MAAM;AACnD,QAAO,aAAa,OAAO,QAAQ,GAAG,KAAK,CAAC,SAAS,QAAQ;AAC3D,MAAI,IAAI,SAAS,OACf,QAAO;GACL,GAAG;GACH,uBAAuB,IAAI,yBAAyB,YAAY,UAAU,IAAI,QAAQ;GACvF;AAGH,SAAO,EAAE;GACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"breadcrumb.d.ts","names":[],"sources":["../src/breadcrumb.tsx"],"sourcesContent":[],"mappings":";;;;UAKiB,cAAA;QACT;EADS,GAAA,CAAA,EAAA,MAAA;AAKjB;AA8BgB,UA9BC,iBAAA,CA8BY;EAErB;;;;AAMR;EAEQ,WAAA,CAAA,EAAA,OAAA,GAAA;IACG;;;IAKK,GAAA,EAAA,MAAA;EACR,CAAA;EACA;;;;AAyDR;;;;;;;;;iBA3EgB,aAAA,oBAER,gBACI,oBACT;iBAIa,kBAAA,oBAER,gBACG,oBACR;iBAIa,0BAAA,OACR,YACA,iBACG,oBACR;;;;;;;;;iBAuDa,UAAA,QAAkB,sBAA+B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"breadcrumb.js","names":["items: BreadcrumbItem[]"],"sources":["../src/breadcrumb.tsx"],"sourcesContent":["import { type ReactNode, useMemo } from 'react';\nimport type * as PageTree from '@/page-tree/definitions';\nimport { normalizeUrl } from '@/utils/normalize-url';\nimport { findPath } from '@/page-tree/utils';\n\nexport interface BreadcrumbItem {\n name: ReactNode;\n url?: string;\n}\n\nexport interface BreadcrumbOptions {\n /**\n * Include the root folders in the breadcrumb items array.\n *\n * @defaultValue false\n */\n includeRoot?:\n | boolean\n | {\n /**\n * Specify the url of root\n */\n url: string;\n };\n\n /**\n * Include the page itself in the breadcrumb items array\n *\n * @defaultValue false\n */\n includePage?: boolean;\n\n /**\n * Count separator as an item\n *\n * @defaultValue false\n */\n includeSeparator?: boolean;\n}\n\nexport function useBreadcrumb(\n url: string,\n tree: PageTree.Root,\n options?: BreadcrumbOptions,\n): BreadcrumbItem[] {\n return useMemo(() => getBreadcrumbItems(url, tree, options), [tree, url, options]);\n}\n\nexport function getBreadcrumbItems(\n url: string,\n tree: PageTree.Root,\n options: BreadcrumbOptions = {},\n): BreadcrumbItem[] {\n return getBreadcrumbItemsFromPath(tree, searchPath(tree.children, url) ?? [], options);\n}\n\nexport function getBreadcrumbItemsFromPath(\n tree: PageTree.Root,\n path: PageTree.Node[],\n options: BreadcrumbOptions,\n): BreadcrumbItem[] {\n const { includePage = false, includeSeparator = false, includeRoot = false } = options;\n let items: BreadcrumbItem[] = [];\n for (let i = 0; i < path.length; i++) {\n const item = path[i];\n\n switch (item.type) {\n case 'page':\n if (includePage)\n items.push({\n name: item.name,\n url: item.url,\n });\n break;\n case 'folder':\n if (item.root && !includeRoot) {\n items = [];\n break;\n }\n\n // only show the index node of folders if possible\n if (i === path.length - 1 || item.index !== path[i + 1]) {\n items.push({\n name: item.name,\n url: item.index?.url,\n });\n }\n break;\n case 'separator':\n if (item.name && includeSeparator)\n items.push({\n name: item.name,\n });\n break;\n }\n }\n\n if (includeRoot) {\n items.unshift({\n name: tree.name,\n url: typeof includeRoot === 'object' ? includeRoot.url : undefined,\n });\n }\n\n return items;\n}\n\n/**\n * Search the path of a node in the tree by a specified url\n *\n * - When the page doesn't exist, return null\n *\n * @returns The path to the target node from root\n * @internal Don't use this on your own\n */\nexport function searchPath(nodes: PageTree.Node[], url: string): PageTree.Node[] | null {\n const normalizedUrl = normalizeUrl(url);\n\n return findPath(nodes, (node) => node.type === 'page' && node.url === normalizedUrl);\n}\n"],"mappings":";;;;;AAwCA,SAAgB,cACd,KACA,MACA,SACkB;AAClB,QAAO,cAAc,mBAAmB,KAAK,MAAM,QAAQ,EAAE;EAAC;EAAM;EAAK;EAAQ,CAAC;;AAGpF,SAAgB,mBACd,KACA,MACA,UAA6B,EAAE,EACb;AAClB,QAAO,2BAA2B,MAAM,WAAW,KAAK,UAAU,IAAI,IAAI,EAAE,EAAE,QAAQ;;AAGxF,SAAgB,2BACd,MACA,MACA,SACkB;CAClB,MAAM,EAAE,cAAc,OAAO,mBAAmB,OAAO,cAAc,UAAU;CAC/E,IAAIA,QAA0B,EAAE;AAChC,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,OAAO,KAAK;AAElB,UAAQ,KAAK,MAAb;GACE,KAAK;AACH,QAAI,YACF,OAAM,KAAK;KACT,MAAM,KAAK;KACX,KAAK,KAAK;KACX,CAAC;AACJ;GACF,KAAK;AACH,QAAI,KAAK,QAAQ,CAAC,aAAa;AAC7B,aAAQ,EAAE;AACV;;AAIF,QAAI,MAAM,KAAK,SAAS,KAAK,KAAK,UAAU,KAAK,IAAI,GACnD,OAAM,KAAK;KACT,MAAM,KAAK;KACX,KAAK,KAAK,OAAO;KAClB,CAAC;AAEJ;GACF,KAAK;AACH,QAAI,KAAK,QAAQ,iBACf,OAAM,KAAK,EACT,MAAM,KAAK,MACZ,CAAC;AACJ;;;AAIN,KAAI,YACF,OAAM,QAAQ;EACZ,MAAM,KAAK;EACX,KAAK,OAAO,gBAAgB,WAAW,YAAY,MAAM;EAC1D,CAAC;AAGJ,QAAO;;;;;;;;;;AAWT,SAAgB,WAAW,OAAwB,KAAqC;CACtF,MAAM,gBAAgB,aAAa,IAAI;AAEvC,QAAO,SAAS,QAAQ,SAAS,KAAK,SAAS,UAAU,KAAK,QAAQ,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"codeblock-utils-CdA7nXLP.d.ts","names":[],"sources":["../src/mdx-plugins/codeblock-utils.ts"],"sourcesContent":[],"mappings":";;;;UAGiB,oBAAA;eACF;EADE,YAAA,CAAA,EAAA,MAAA;EACF,OAAA,CAAA,EAAA;IASA,EAAA,EAAA,MAAA;EAAe,CAAA,GAAA,KAAA;EAIhB,QAAA,EAAA;IAAY,KAAA,EAAA,MAAA;IAIV,QAAA,EAAA,CARD,YAQsB,GARP,IAQO,CAAA,EAAA;EACnC,CAAA,EAAA;EACA,IAAA,EAAA;IACA,KAAA,EAAA,MAAA;IACA,QAAA,EARY,YAQZ,EAAA;EAEC,CAAA,EAAA;;AAAwC,iBAN3B,qBAAA,CAM2B;EAAA,OAAA;EAAA,YAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAAxC,oBAAwC,CAAA,EAAjB,iBAAiB;AA6D1B,UAAA,mBAAmB,CAAA,aAAA,MAAA,GAAA,MAAA,CAAA,CAAA;EACP,UAAA,EAAf,OAAe,CAAP,MAAO,CAAA,IAAA,EAAA,MAAA,GAAA,IAAA,CAAA,CAAA;EAAP,IAAA,EAAA,MAAA;;;AAOtB;;AAGuB,iBAHP,wBAGO,CAAA,aAAA,MAAA,GAAA,MAAA,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,CAAA,EADN,IACM,EAAA,CAAA,EAApB,mBAAoB,CAAA,IAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.d.ts","names":[],"sources":["../../src/content/github.ts"],"sourcesContent":[],"mappings":";UAQiB,0BAAA;EAAA;AA6CjB;;EAEE,IAAA,EAAA,MAAA;EACA;EACA,KAAA,EAAA,MAAA;EACA;;;EAGQ,IAAA,EAAA,MAAA;EACP;;;EAAoC,KAAA,CAAA,EAAA,MAAA;;;;;;;;;;;;;;WApB5B;YAEC;;;;;;;;iBASU,iBAAA;;;;;;;;UAQZ;GACP,6BAA6B,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.js","names":[],"sources":["../../src/content/github.ts"],"sourcesContent":["type Response = {\n commit: {\n committer: {\n date: string;\n };\n };\n}[];\n\nexport interface GetGithubLastCommitOptions {\n /**\n * Repository name, like \"fumadocs\"\n */\n repo: string;\n\n /** Owner of repository */\n owner: string;\n\n /**\n * Path to file\n */\n path: string;\n\n /**\n * GitHub access token\n */\n token?: string;\n\n /**\n * SHA or ref (branch or tag) name.\n */\n sha?: string;\n\n /**\n * Base URL for GitHub API\n * @default \"https://api.github.com\"\n * @link https://docs.github.com/en/get-started/using-github-docs/about-versions-of-github-docs#determining-which-github-product-you-use\n */\n baseUrl?: string;\n\n /**\n * Custom query parameters\n */\n params?: Record<string, string>;\n\n options?: RequestInit;\n}\n\n/**\n * Get the last edit time of a file using GitHub API\n *\n * By default, this will cache the result forever.\n * Set `options.next.revalidate` to customise this.\n */\nexport async function getGithubLastEdit({\n repo,\n token,\n owner,\n path,\n sha,\n baseUrl = 'https://api.github.com',\n options = {},\n params: customParams = {},\n}: GetGithubLastCommitOptions): Promise<Date | null> {\n const headers = new Headers(options.headers);\n const params = new URLSearchParams();\n params.set('path', path);\n params.set('page', '1');\n params.set('per_page', '1');\n\n if (sha) params.set('sha', sha);\n\n for (const [key, value] of Object.entries(customParams)) {\n params.set(key, value);\n }\n\n if (token) {\n headers.append('authorization', token);\n }\n\n const res = await fetch(`${baseUrl}/repos/${owner}/${repo}/commits?${params.toString()}`, {\n cache: 'force-cache',\n ...options,\n headers,\n });\n\n if (!res.ok) throw new Error(`Failed to fetch last edit time from Git ${await res.text()}`);\n const data = (await res.json()) as Response;\n\n if (data.length === 0) return null;\n return new Date(data[0].commit.committer.date);\n}\n"],"mappings":";;;;;;;AAqDA,eAAsB,kBAAkB,EACtC,MACA,OACA,OACA,MACA,KACA,UAAU,0BACV,UAAU,EAAE,EACZ,QAAQ,eAAe,EAAE,IAC0B;CACnD,MAAM,UAAU,IAAI,QAAQ,QAAQ,QAAQ;CAC5C,MAAM,SAAS,IAAI,iBAAiB;AACpC,QAAO,IAAI,QAAQ,KAAK;AACxB,QAAO,IAAI,QAAQ,IAAI;AACvB,QAAO,IAAI,YAAY,IAAI;AAE3B,KAAI,IAAK,QAAO,IAAI,OAAO,IAAI;AAE/B,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,aAAa,CACrD,QAAO,IAAI,KAAK,MAAM;AAGxB,KAAI,MACF,SAAQ,OAAO,iBAAiB,MAAM;CAGxC,MAAM,MAAM,MAAM,MAAM,GAAG,QAAQ,SAAS,MAAM,GAAG,KAAK,WAAW,OAAO,UAAU,IAAI;EACxF,OAAO;EACP,GAAG;EACH;EACD,CAAC;AAEF,KAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM,2CAA2C,MAAM,IAAI,MAAM,GAAG;CAC3F,MAAM,OAAQ,MAAM,IAAI,MAAM;AAE9B,KAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,QAAO,IAAI,KAAK,KAAK,GAAG,OAAO,UAAU,KAAK"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/content/index.ts"],"sourcesContent":[],"mappings":";;;;;;;UAqBiB,aAAA;eACF;;AADE,iBAIK,QAAA,CAHP;EAAA,QAAA,EAIH,OAJa;EAAA,aAAA;EAAA,aAAA;EAAA,GAAA;CAAA,EAQtB,aARsB,GAAA;EAGH,aAAQ,CAAA,EAMZ,aANY;EAClB,aAAA,CAAA,EAMM,aANN;EACV,QAAA,EAMU,UANV;CACA,CAAA,EAMD,OANC,CAMD,MAAA,CAAA,YANC,CAAA,OAAA,EAAA,MAAA,GAKoB,MAAA,CACrB,qBANC,CAAA,GAAA,CAAA,CAAA,GAMD,QANC,CAMD,SANC,CAAA,GAAA,CAAA,MAAA,GAAA,MAAA,GAAA,MAAA,GAAA,OAAA,GAMD,MAAA,CAAA,WAAA,GAAA,MAAA,CAAA,YANC,CAAA,OAAA,EAAA,MAAA,GAMD,MAAA,CAAA,qBANC,CAAA,GAAA,CAAA,CAAA,GAMD,QANC,CAMD,SANC,CAAA,GAAA,IAAA,GAAA,SAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/content/index.ts"],"sourcesContent":["import { remark } from 'remark';\nimport remarkGfm from 'remark-gfm';\nimport remarkRehype from 'remark-rehype';\nimport type { Compatible } from 'vfile';\nimport { type Components, toJsxRuntime } from 'hast-util-to-jsx-runtime';\nimport type { Root } from 'hast';\nimport * as JsxRuntime from 'react/jsx-runtime';\nimport type { PluggableList, Processor } from 'unified';\nimport type { ReactNode } from 'react';\n\nfunction rehypeReact(this: Processor, options: MarkdownProps = {}) {\n this.compiler = (tree, file) => {\n return toJsxRuntime(tree as Root, {\n development: false,\n filePath: file.path,\n ...JsxRuntime,\n ...options,\n });\n };\n}\n\nexport interface MarkdownProps {\n components?: Components;\n}\n\nexport async function Markdown({\n children: content,\n remarkPlugins = [],\n rehypePlugins = [],\n ...options\n}: MarkdownProps & {\n remarkPlugins?: PluggableList;\n rehypePlugins?: PluggableList;\n children: Compatible;\n}) {\n const processor = remark()\n .use(remarkGfm)\n .use(remarkPlugins)\n .use(remarkRehype)\n .use(rehypePlugins)\n .use(rehypeReact, options);\n\n return (await processor.process(content)).result as ReactNode;\n}\n"],"mappings":";;;;;;;AAUA,SAAS,YAA6B,UAAyB,EAAE,EAAE;AACjE,MAAK,YAAY,MAAM,SAAS;AAC9B,SAAO,aAAa,MAAc;GAChC,aAAa;GACb,UAAU,KAAK;GACf,GAAG;GACH,GAAG;GACJ,CAAC;;;AAQN,eAAsB,SAAS,EAC7B,UAAU,SACV,gBAAgB,EAAE,EAClB,gBAAgB,EAAE,EAClB,GAAG,WAKF;AAQD,SAAQ,MAPU,QAAQ,CACvB,IAAI,UAAU,CACd,IAAI,cAAc,CAClB,IAAI,aAAa,CACjB,IAAI,cAAc,CAClB,IAAI,aAAa,QAAQ,CAEJ,QAAQ,QAAQ,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset-bundler.d.ts","names":[],"sources":["../../../src/content/mdx/preset-bundler.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAIY,uBAAA,GAA0B,KACpC,YAAY;kBAGI;kBACA;2BAES;yBACF;uBACF;yBACE;qBACJ;sBACC;AAZtB,CAAA;;;;AAIkB,iBAcI,SAAA,CAdJ,OAAA,CAAA,EAcuB,uBAdvB,CAAA,EAcsD,OAdtD,CAc8D,gBAd9D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset-bundler.js","names":[],"sources":["../../../src/content/mdx/preset-bundler.ts"],"sourcesContent":["import type { ProcessorOptions } from '@mdx-js/mdx';\nimport type * as Plugins from '@/mdx-plugins';\nimport { resolvePlugins, type ResolvePlugins } from '@/content/mdx/util';\n\nexport type MDXBundlerPresetOptions = Omit<\n NonNullable<ProcessorOptions>,\n 'rehypePlugins' | 'remarkPlugins'\n> & {\n rehypePlugins?: ResolvePlugins;\n remarkPlugins?: ResolvePlugins;\n\n remarkStructureOptions?: Plugins.StructureOptions | false;\n remarkHeadingOptions?: Plugins.RemarkHeadingOptions;\n remarkImageOptions?: Plugins.RemarkImageOptions | false;\n remarkCodeTabOptions?: Plugins.RemarkCodeTabOptions | false;\n remarkNpmOptions?: Plugins.RemarkNpmOptions | false;\n rehypeCodeOptions?: Plugins.RehypeCodeOptions | false;\n};\n\n/**\n * apply MDX processor presets\n */\nexport async function mdxPreset(options: MDXBundlerPresetOptions = {}): Promise<ProcessorOptions> {\n const {\n rehypeCodeOptions,\n remarkImageOptions,\n remarkHeadingOptions,\n remarkStructureOptions,\n remarkCodeTabOptions,\n remarkNpmOptions,\n ...mdxOptions\n } = options;\n\n const remarkPlugins = await resolvePlugins(\n (v) => [\n import('remark-gfm').then((mod) => mod.default),\n import('@/mdx-plugins/remark-heading').then((mod) => [\n mod.remarkHeading,\n {\n generateToc: false,\n ...remarkHeadingOptions,\n },\n ]),\n remarkImageOptions !== false &&\n import('@/mdx-plugins/remark-image').then((mod) => [\n mod.remarkImage,\n {\n ...remarkImageOptions,\n useImport: remarkImageOptions?.useImport ?? true,\n },\n ]),\n remarkCodeTabOptions !== false &&\n import('@/mdx-plugins/remark-code-tab').then((mod) => [\n mod.remarkCodeTab,\n remarkCodeTabOptions,\n ]),\n remarkNpmOptions !== false &&\n import('@/mdx-plugins/remark-npm').then((mod) => [mod.remarkNpm, remarkNpmOptions]),\n ...v,\n remarkStructureOptions !== false &&\n import('@/mdx-plugins/remark-structure').then((mod) => [\n mod.remarkStructure,\n {\n exportAs: 'structuredData',\n ...remarkStructureOptions,\n } satisfies Plugins.StructureOptions,\n ]),\n ],\n mdxOptions.remarkPlugins,\n );\n\n const rehypePlugins = await resolvePlugins(\n (v) => [\n rehypeCodeOptions !== false &&\n import('@/mdx-plugins/rehype-code').then((mod) => [mod.rehypeCode, rehypeCodeOptions]),\n ...v,\n import('@/mdx-plugins/rehype-toc').then((mod) => mod.rehypeToc),\n ],\n mdxOptions.rehypePlugins,\n );\n\n return {\n ...mdxOptions,\n remarkPlugins,\n rehypePlugins,\n };\n}\n"],"mappings":";;;;;;AAsBA,eAAsB,UAAU,UAAmC,EAAE,EAA6B;CAChG,MAAM,EACJ,mBACA,oBACA,sBACA,wBACA,sBACA,kBACA,GAAG,eACD;CAEJ,MAAM,gBAAgB,MAAM,gBACzB,MAAM;EACL,OAAO,cAAc,MAAM,QAAQ,IAAI,QAAQ;EAC/C,OAAO,uCAAgC,MAAM,QAAQ,CACnD,IAAI,eACJ;GACE,aAAa;GACb,GAAG;GACJ,CACF,CAAC;EACF,uBAAuB,SACrB,OAAO,qCAA8B,MAAM,QAAQ,CACjD,IAAI,aACJ;GACE,GAAG;GACH,WAAW,oBAAoB,aAAa;GAC7C,CACF,CAAC;EACJ,yBAAyB,SACvB,OAAO,wCAAiC,MAAM,QAAQ,CACpD,IAAI,eACJ,qBACD,CAAC;EACJ,qBAAqB,SACnB,OAAO,mCAA4B,MAAM,QAAQ,CAAC,IAAI,WAAW,iBAAiB,CAAC;EACrF,GAAG;EACH,2BAA2B,SACzB,OAAO,yCAAkC,MAAM,QAAQ,CACrD,IAAI,iBACJ;GACE,UAAU;GACV,GAAG;GACJ,CACF,CAAC;EACL,EACD,WAAW,cACZ;CAED,MAAM,gBAAgB,MAAM,gBACzB,MAAM;EACL,sBAAsB,SACpB,OAAO,oCAA6B,MAAM,QAAQ,CAAC,IAAI,YAAY,kBAAkB,CAAC;EACxF,GAAG;EACH,OAAO,mCAA4B,MAAM,QAAQ,IAAI,UAAU;EAChE,EACD,WAAW,cACZ;AAED,QAAO;EACL,GAAG;EACH;EACA;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset-runtime.d.ts","names":[],"sources":["../../../src/content/mdx/preset-runtime.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;KAIY,uBAAA,GAA0B,KACpC,YAAY;kBAGI;kBACA;2BAES;yBACF;uBACF;yBACE;qBACJ;sBACC;AAZtB,CAAA;;;;AAIkB,iBAcI,SAAA,CAdJ,OAAA,CAAA,EAcuB,uBAdvB,CAAA,EAcsD,OAdtD,CAc8D,gBAd9D,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preset-runtime.js","names":[],"sources":["../../../src/content/mdx/preset-runtime.ts"],"sourcesContent":["import type { ProcessorOptions } from '@mdx-js/mdx';\nimport type * as Plugins from '@/mdx-plugins';\nimport { resolvePlugins, type ResolvePlugins } from '@/content/mdx/util';\n\nexport type MDXRuntimePresetOptions = Omit<\n NonNullable<ProcessorOptions>,\n 'rehypePlugins' | 'remarkPlugins'\n> & {\n rehypePlugins?: ResolvePlugins;\n remarkPlugins?: ResolvePlugins;\n\n remarkStructureOptions?: Plugins.StructureOptions | false;\n remarkHeadingOptions?: Plugins.RemarkHeadingOptions;\n remarkImageOptions?: Plugins.RemarkImageOptions | false;\n remarkCodeTabOptions?: Plugins.RemarkCodeTabOptions | false;\n remarkNpmOptions?: Plugins.RemarkNpmOptions | false;\n rehypeCodeOptions?: Plugins.RehypeCodeOptions | false;\n};\n\n/**\n * apply MDX processor presets\n */\nexport async function mdxPreset(options: MDXRuntimePresetOptions = {}): Promise<ProcessorOptions> {\n const {\n rehypeCodeOptions,\n remarkImageOptions,\n remarkHeadingOptions,\n remarkStructureOptions,\n remarkCodeTabOptions,\n remarkNpmOptions,\n outputFormat = 'function-body',\n ...mdxOptions\n } = options;\n\n const remarkPlugins = await resolvePlugins(\n (v) => [\n import('remark-gfm').then((mod) => mod.default),\n import('@/mdx-plugins/remark-heading').then((mod) => [\n mod.remarkHeading,\n {\n generateToc: false,\n ...remarkHeadingOptions,\n },\n ]),\n remarkImageOptions !== false &&\n import('@/mdx-plugins/remark-image').then((mod) => [mod.remarkImage, remarkImageOptions]),\n remarkCodeTabOptions !== false &&\n import('@/mdx-plugins/remark-code-tab').then((mod) => [\n mod.remarkCodeTab,\n remarkCodeTabOptions,\n ]),\n remarkNpmOptions !== false &&\n import('@/mdx-plugins/remark-npm').then((mod) => [mod.remarkNpm, remarkNpmOptions]),\n ...v,\n remarkStructureOptions !== false &&\n import('@/mdx-plugins/remark-structure').then((mod) => [\n mod.remarkStructure,\n {\n exportAs: 'structuredData',\n ...remarkStructureOptions,\n } satisfies Plugins.StructureOptions,\n ]),\n ],\n mdxOptions.remarkPlugins,\n );\n\n const rehypePlugins = await resolvePlugins(\n (v) => [\n rehypeCodeOptions !== false &&\n import('@/mdx-plugins/rehype-code').then((mod) => [mod.rehypeCode, rehypeCodeOptions]),\n ...v,\n import('@/mdx-plugins/rehype-toc').then((mod) => mod.rehypeToc),\n ],\n mdxOptions.rehypePlugins,\n );\n\n return {\n ...mdxOptions,\n outputFormat,\n remarkPlugins,\n rehypePlugins,\n };\n}\n"],"mappings":";;;;;;AAsBA,eAAsB,UAAU,UAAmC,EAAE,EAA6B;CAChG,MAAM,EACJ,mBACA,oBACA,sBACA,wBACA,sBACA,kBACA,eAAe,iBACf,GAAG,eACD;CAEJ,MAAM,gBAAgB,MAAM,gBACzB,MAAM;EACL,OAAO,cAAc,MAAM,QAAQ,IAAI,QAAQ;EAC/C,OAAO,uCAAgC,MAAM,QAAQ,CACnD,IAAI,eACJ;GACE,aAAa;GACb,GAAG;GACJ,CACF,CAAC;EACF,uBAAuB,SACrB,OAAO,qCAA8B,MAAM,QAAQ,CAAC,IAAI,aAAa,mBAAmB,CAAC;EAC3F,yBAAyB,SACvB,OAAO,wCAAiC,MAAM,QAAQ,CACpD,IAAI,eACJ,qBACD,CAAC;EACJ,qBAAqB,SACnB,OAAO,mCAA4B,MAAM,QAAQ,CAAC,IAAI,WAAW,iBAAiB,CAAC;EACrF,GAAG;EACH,2BAA2B,SACzB,OAAO,yCAAkC,MAAM,QAAQ,CACrD,IAAI,iBACJ;GACE,UAAU;GACV,GAAG;GACJ,CACF,CAAC;EACL,EACD,WAAW,cACZ;CAED,MAAM,gBAAgB,MAAM,gBACzB,MAAM;EACL,sBAAsB,SACpB,OAAO,oCAA6B,MAAM,QAAQ,CAAC,IAAI,YAAY,kBAAkB,CAAC;EACxF,GAAG;EACH,OAAO,mCAA4B,MAAM,QAAQ,IAAI,UAAU;EAChE,EACD,WAAW,cACZ;AAED,QAAO;EACL,GAAG;EACH;EACA;EACA;EACD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toc.d.ts","names":[],"sources":["../../src/content/toc.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAWA;AAQA;;AAEiB,iBAVD,kBAAA,CAUC,OAAA,EAV2B,UAU3B,CAAA,EAVwC,WAUxC,EAAA;;;;;;;iBAFD,kBAAA,UACL,2BACM,gBACd,QAAQ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"toc.js","names":["result"],"sources":["../../src/content/toc.ts"],"sourcesContent":["import { remark } from 'remark';\nimport { remarkHeading } from '@/mdx-plugins/remark-heading';\nimport type { PluggableList } from 'unified';\nimport type { Compatible } from 'vfile';\nimport type { TOCItemType } from '@/toc';\n\n/**\n * Get Table of Contents from markdown/mdx document (using remark)\n *\n * @param content - Markdown content or file\n */\nexport function getTableOfContents(content: Compatible): TOCItemType[];\n\n/**\n * Get Table of Contents from markdown/mdx document (using remark)\n *\n * @param content - Markdown content or file\n * @param remarkPlugins - remark plugins to be applied first\n */\nexport function getTableOfContents(\n content: Compatible,\n remarkPlugins: PluggableList,\n): Promise<TOCItemType[]>;\n\nexport function getTableOfContents(\n content: Compatible,\n remarkPlugins?: PluggableList,\n): TOCItemType[] | Promise<TOCItemType[]> {\n if (remarkPlugins) {\n return remark()\n .use(remarkPlugins)\n .use(remarkHeading)\n .process(content)\n .then((result) => {\n if ('toc' in result.data) return result.data.toc as TOCItemType[];\n\n return [];\n });\n }\n\n // compatible with sync usages\n const result = remark().use(remarkHeading).processSync(content);\n\n if ('toc' in result.data) return result.data.toc as TOCItemType[];\n return [];\n}\n"],"mappings":";;;;;AAwBA,SAAgB,mBACd,SACA,eACwC;AACxC,KAAI,cACF,QAAO,QAAQ,CACZ,IAAI,cAAc,CAClB,IAAI,cAAc,CAClB,QAAQ,QAAQ,CAChB,MAAM,aAAW;AAChB,MAAI,SAASA,SAAO,KAAM,QAAOA,SAAO,KAAK;AAE7C,SAAO,EAAE;GACT;CAIN,MAAM,SAAS,QAAQ,CAAC,IAAI,cAAc,CAAC,YAAY,QAAQ;AAE/D,KAAI,SAAS,OAAO,KAAM,QAAO,OAAO,KAAK;AAC7C,QAAO,EAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"definitions-Ca2P2viV.d.ts","names":[],"sources":["../src/page-tree/definitions.ts"],"sourcesContent":[],"mappings":";;;UAEU,EAAA;;AAF6B;AASvC;EACQ,GAAA,CAAA,EAAA,MAAA;;AAKK,UANI,IAAA,SAAa,EAMjB,CAAA;EANiB,IAAA,EACtB,SADsB;EAAE,QAAA,EAEpB,IAFoB,EAAA;EASpB;;;EAA0B,QAAA,CAAA,EAHzB,IAGyB;;AAErB,KAFL,IAAA,GAAO,IAEG,GAFI,SAEJ,GAFgB,MAEhB;AASd,UATS,IAAA,SAAa,EAStB,CAAA;EASQ;;;EAlBgB,IAAA,CAAA,EAAA;IAsBf,IAAA,EAAA,MAAU;EAElB,CAAA;EACA,IAAA,EAAA,MAAA;EAH0B,IAAA,EAb3B,SAa2B;EAAE,GAAA,EAAA,MAAA;EAMpB;;;;;EAgBL,QAAA,CAAA,EAAA,OAAA;EAhBoB,WAAA,CAAA,EAVhB,SAUgB;EAAE,IAAA,CAAA,EATzB,SASyB;;UANjB,SAAA,SAAkB;;SAE1B;SACA;;UAGQ,MAAA,SAAe;;;;;;;;QASxB;gBACQ;;;;UAIN;SACD;YACG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dynamic-link.d.ts","names":[],"sources":["../src/dynamic-link.tsx"],"sourcesContent":[],"mappings":";;;;KAMY,gBAAA,GAAmB;;;AAA/B;AAQA;;AAAwB,cAAX,WAAW,EAAA,MAAA,CAAA,yBAAA,CAAA,SAAA,GAAA,MAAA,CAAA,aAAA,CAAA,iBAAA,CAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dynamic-link.js","names":[],"sources":["../src/dynamic-link.tsx"],"sourcesContent":["'use client';\n\nimport { forwardRef, useMemo } from 'react';\nimport Link, { type LinkProps } from './link';\nimport { useParams } from '@/framework';\n\nexport type DynamicLinkProps = LinkProps;\n\n/**\n * Extends the default `Link` component\n *\n * It supports dynamic hrefs, which means you can use `/[lang]/my-page` with `dynamicHrefs` enabled\n */\n\nexport const DynamicLink = forwardRef<HTMLAnchorElement, DynamicLinkProps>(\n ({ href, ...props }, ref) => {\n const params = useParams();\n\n const url = useMemo(() => {\n return href?.replace(/\\[.*]/, (key) => {\n const mappedKey = key.slice(1, -1);\n const value = mappedKey in params ? params[mappedKey] : undefined;\n if (!value) return '';\n\n return typeof value === 'string' ? value : value.join('/');\n });\n }, [params, href]);\n\n return <Link ref={ref} href={url} {...props} />;\n },\n);\n\nDynamicLink.displayName = 'DynamicLink';\n\nexport default DynamicLink;\n"],"mappings":";;;;;;;;;;;;;AAcA,MAAa,cAAc,YACxB,EAAE,MAAM,GAAG,SAAS,QAAQ;CAC3B,MAAM,SAAS,WAAW;AAY1B,QAAO,oBAAC;EAAU;EAAK,MAVX,cAAc;AACxB,UAAO,MAAM,QAAQ,UAAU,QAAQ;IACrC,MAAM,YAAY,IAAI,MAAM,GAAG,GAAG;IAClC,MAAM,QAAQ,aAAa,SAAS,OAAO,aAAa;AACxD,QAAI,CAAC,MAAO,QAAO;AAEnB,WAAO,OAAO,UAAU,WAAW,QAAQ,MAAM,KAAK,IAAI;KAC1D;KACD,CAAC,QAAQ,KAAK,CAAC;EAEgB,GAAI;GAAS;EAElD;AAED,YAAY,cAAc;AAE1B,2BAAe"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch-CiphcAUR.js","names":[],"sources":["../src/search/client/fetch.ts"],"sourcesContent":["import type { SortedResult } from '@/search';\n\nexport interface FetchOptions {\n /**\n * API route for search endpoint, support absolute URLs.\n *\n * @defaultValue '/api/search'\n */\n api?: string;\n\n /**\n * Filter results with specific tag(s).\n */\n tag?: string | string[];\n\n /**\n * Filter by locale\n */\n locale?: string;\n}\n\nconst cache = new Map<string, SortedResult[]>();\n\nexport async function fetchDocs(\n query: string,\n { api = '/api/search', locale, tag }: FetchOptions,\n): Promise<SortedResult[]> {\n const url = new URL(api, window.location.origin);\n url.searchParams.set('query', query);\n if (locale) url.searchParams.set('locale', locale);\n if (tag) url.searchParams.set('tag', Array.isArray(tag) ? tag.join(',') : tag);\n\n const key = url.toString();\n const cached = cache.get(key);\n if (cached) return cached;\n\n const res = await fetch(url);\n if (!res.ok) throw new Error(await res.text());\n const result = (await res.json()) as SortedResult[];\n cache.set(key, result);\n return result;\n}\n"],"mappings":";AAqBA,MAAM,wBAAQ,IAAI,KAA6B;AAE/C,eAAsB,UACpB,OACA,EAAE,MAAM,eAAe,QAAQ,OACN;CACzB,MAAM,MAAM,IAAI,IAAI,KAAK,OAAO,SAAS,OAAO;AAChD,KAAI,aAAa,IAAI,SAAS,MAAM;AACpC,KAAI,OAAQ,KAAI,aAAa,IAAI,UAAU,OAAO;AAClD,KAAI,IAAK,KAAI,aAAa,IAAI,OAAO,MAAM,QAAQ,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;CAE9E,MAAM,MAAM,IAAI,UAAU;CAC1B,MAAM,SAAS,MAAM,IAAI,IAAI;AAC7B,KAAI,OAAQ,QAAO;CAEnB,MAAM,MAAM,MAAM,MAAM,IAAI;AAC5B,KAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM,MAAM,IAAI,MAAM,CAAC;CAC9C,MAAM,SAAU,MAAM,IAAI,MAAM;AAChC,OAAM,IAAI,KAAK,OAAO;AACtB,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/framework/index.tsx"],"sourcesContent":[],"mappings":";;;;;UAKiB,UAAA,SAAmB,KAAK;;;AAAzC;;EAMiB,GAAA,CAAA,EAAA,MAAA,GAAA,YAAA;EANmB;;AAYnC;EAMgB,QAAA,CAAM,EAAA,OAAA;AAKvB;UATU,SAAA,SAAkB,cAWT,CAAA,GAAA,CAAA,CAAA;EACA,QAAA,CAAA,EAAA,OAAA;;AAEV,UAVQ,MAAA,CAUR;EAMI,IAAA,EAAA,CAAA,GAAA,EAAA,MAAA,EAAA,GAAA,IAAA;EAAH,OAAA,EAAA,GAAA,GAAA,IAAA;;AAaM,UAxBC,SAAA,CAwBgB;EAC/B,WAAA,EAAA,GAAA,GAAA,MAAA;EACA,SAAA,EAAA,GAAA,GAxBiB,MAwBjB,CAAA,MAAA,EAAA,MAAA,GAAA,MAAA,EAAA,CAAA;EACA,SAAA,EAAA,GAAA,GAxBiB,MAwBjB;EACA,IAAA,CAAA,EAvBO,EAuBP,CAtBE,cAsBF,CAAA,GAAA,CAAA,GAAA;IACA,QAAA,CAAA,EAAA,OAAA;EACA,CAAA,CAAA;EACC,KAAA,CAAA,EApBO,EAoBP,CApBU,UAoBV,CAAA;;AAAmC,iBAPtB,iBAAA,CAOsB;EAAA,IAAA;EAAA,SAAA;EAAA,SAAA;EAAA,WAAA;EAAA,KAAA;EAAA;AAetC,CAfsC,EAAnC,SAAmC,GAAA;EAAA,QAAA,EAAX,SAAW;AAetC,CAAA,CAAA,EAfsC,kBAAA,CAAA,GAAA,CAAA,OAeX;AAIX,iBAJA,WAAA,CAAA,CAIS,EAAA,MAAA;AAIT,iBAJA,SAAA,CAAA,CAIS,EAJA,MAIA;AAIT,iBAJA,SAAA,CAAA,CAIa,EAJJ,MAIc,CAAA,MAAA,EAAA,MAAA,GAAA,MAAA,EAAA,CAAA;AAavB,iBAbA,KAAA,CAaY,KAAS,EAbR,UAaQ,CAAA,EAbE,kBAAA,CAAA,GAAA,CAAA,OAaF;iBAArB,IAAA,QAAY,YAAS,kBAAA,CAAA,GAAA,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["Link","usePathname","useRouter","useParams","Image"],"sources":["../../src/framework/index.tsx"],"sourcesContent":["'use client';\nimport type { ComponentProps, FC, ReactNode } from 'react';\nimport { createContext, use, useMemo } from 'react';\nimport type { StaticImport } from 'next/dist/shared/lib/get-img-props';\n\nexport interface ImageProps extends Omit<ComponentProps<'img'>, 'src'> {\n sizes?: string;\n\n /**\n * Next.js Image component has other allowed type for `src`\n */\n src?: string | StaticImport;\n\n /**\n * priority of image (from Next.js)\n */\n priority?: boolean;\n}\n\ninterface LinkProps extends ComponentProps<'a'> {\n prefetch?: boolean;\n}\n\nexport interface Router {\n push: (url: string) => void;\n refresh: () => void;\n}\n\nexport interface Framework {\n usePathname: () => string;\n useParams: () => Record<string, string | string[]>;\n useRouter: () => Router;\n\n Link?: FC<\n ComponentProps<'a'> & {\n prefetch?: boolean;\n }\n >;\n\n Image?: FC<ImageProps>;\n}\n\nconst notImplemented = () => {\n throw new Error('You need to wrap your application inside `FrameworkProvider`.');\n};\n\nconst FrameworkContext = createContext<Framework>({\n useParams: notImplemented,\n useRouter: notImplemented,\n usePathname: notImplemented,\n});\n\nexport function FrameworkProvider({\n Link,\n useRouter,\n useParams,\n usePathname,\n Image,\n children,\n}: Framework & { children: ReactNode }) {\n const framework = useMemo(\n () => ({\n usePathname,\n useRouter,\n Link,\n Image,\n useParams,\n }),\n [Link, usePathname, useRouter, useParams, Image],\n );\n\n return <FrameworkContext value={framework}>{children}</FrameworkContext>;\n}\n\nexport function usePathname() {\n return use(FrameworkContext).usePathname();\n}\n\nexport function useRouter() {\n return use(FrameworkContext).useRouter();\n}\n\nexport function useParams() {\n return use(FrameworkContext).useParams();\n}\n\nexport function Image(props: ImageProps) {\n const { Image } = use(FrameworkContext);\n if (!Image) {\n const { src, alt, priority, ...rest } = props;\n\n return (\n <img alt={alt} src={src as string} fetchPriority={priority ? 'high' : 'auto'} {...rest} />\n );\n }\n\n return <Image {...props} />;\n}\n\nexport function Link(props: LinkProps) {\n const { Link } = use(FrameworkContext);\n if (!Link) {\n const { href, prefetch: _, ...rest } = props;\n return <a href={href} {...rest} />;\n }\n\n return <Link {...props} />;\n}\n"],"mappings":";;;;;;AA0CA,MAAM,uBAAuB;AAC3B,OAAM,IAAI,MAAM,gEAAgE;;AAGlF,MAAM,mBAAmB,cAAyB;CAChD,WAAW;CACX,WAAW;CACX,aAAa;CACd,CAAC;AAEF,SAAgB,kBAAkB,EAChC,cACA,wBACA,wBACA,4BACA,gBACA,YACsC;AAYtC,QAAO,oBAAC;EAAiB,OAXP,eACT;GACL;GACA;GACA;GACA;GACA;GACD,GACD;GAACA;GAAMC;GAAaC;GAAWC;GAAWC;GAAM,CACjD;EAE2C;GAA4B;;AAG1E,SAAgB,cAAc;AAC5B,QAAO,IAAI,iBAAiB,CAAC,aAAa;;AAG5C,SAAgB,YAAY;AAC1B,QAAO,IAAI,iBAAiB,CAAC,WAAW;;AAG1C,SAAgB,YAAY;AAC1B,QAAO,IAAI,iBAAiB,CAAC,WAAW;;AAG1C,SAAgB,MAAM,OAAmB;CACvC,MAAM,EAAE,mBAAU,IAAI,iBAAiB;AACvC,KAAI,CAACA,SAAO;EACV,MAAM,EAAE,KAAK,KAAK,UAAU,GAAG,SAAS;AAExC,SACE,oBAAC;GAAS;GAAU;GAAe,eAAe,WAAW,SAAS;GAAQ,GAAI;IAAQ;;AAI9F,QAAO,oBAACA,WAAM,GAAI,QAAS;;AAG7B,SAAgB,KAAK,OAAkB;CACrC,MAAM,EAAE,iBAAS,IAAI,iBAAiB;AACtC,KAAI,CAACJ,QAAM;EACT,MAAM,EAAE,MAAM,UAAU,GAAG,GAAG,SAAS;AACvC,SAAO,oBAAC;GAAQ;GAAM,GAAI;IAAQ;;AAGpC,QAAO,oBAACA,UAAK,GAAI,QAAS"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"next.d.ts","names":[],"sources":["../../src/framework/next.tsx"],"sourcesContent":[],"mappings":";;;;;iBAOgB,YAAA;;QAER;SACC;;YAEG;SACH;EANO,KAAA,CAAA,EAON,SAPkB,CAAA,OAAA,CAAA;CAC1B,CAAA,EAOD,kBAAA,CAAA,GAAA,CAAA,OAPC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"next.js","names":[],"sources":["../../src/framework/next.tsx"],"sourcesContent":["'use client';\nimport { type Framework, FrameworkProvider } from '@/framework/index';\nimport type { ReactNode } from 'react';\nimport { useParams, usePathname, useRouter } from 'next/navigation';\nimport Link from 'next/link';\nimport Image from 'next/image';\n\nexport function NextProvider({\n children,\n Link: CustomLink,\n Image: CustomImage,\n}: {\n children: ReactNode;\n Link?: Framework['Link'];\n Image?: Framework['Image'];\n}) {\n return (\n <FrameworkProvider\n usePathname={usePathname}\n useRouter={useRouter}\n useParams={useParams}\n Link={CustomLink ?? (Link as Framework['Link'])}\n Image={CustomImage ?? (Image as Framework['Image'])}\n >\n {children}\n </FrameworkProvider>\n );\n}\n"],"mappings":";;;;;;;;;AAOA,SAAgB,aAAa,EAC3B,UACA,MAAM,YACN,OAAO,eAKN;AACD,QACE,oBAAC;EACc;EACF;EACA;EACX,MAAM,cAAe;EACrB,OAAO,eAAgB;EAEtB;GACiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-router.d.ts","names":[],"sources":["../../src/framework/react-router.tsx"],"sourcesContent":[],"mappings":";;;;;iBAoCgB,mBAAA;;QAER;SACC;;YAEG;SACH;EANO,KAAA,CAAA,EAON,SAPM,CAAA,OAAmB,CAAA;CACjC,CAAA,EAOD,kBAAA,CAAA,GAAA,CAAA,OAPC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-router.js","names":["framework: Framework"],"sources":["../../src/framework/react-router.tsx"],"sourcesContent":["import { type ReactNode, useMemo } from 'react';\nimport { type Framework, FrameworkProvider } from '@/framework/index';\nimport { Link, useLocation, useNavigate, useParams, useRevalidator } from 'react-router';\n\nconst framework: Framework = {\n usePathname() {\n return useLocation().pathname;\n },\n useParams() {\n return useParams() as Record<string, string | string[]>;\n },\n useRouter() {\n const navigate = useNavigate();\n const revalidator = useRevalidator();\n\n return useMemo(\n () => ({\n push(url) {\n navigate(url);\n },\n refresh() {\n void revalidator.revalidate();\n },\n }),\n [navigate, revalidator],\n );\n },\n Link({ href, prefetch, ...props }) {\n return (\n <Link to={href!} prefetch={prefetch ? 'intent' : 'none'} {...props}>\n {props.children}\n </Link>\n );\n },\n};\n\nexport function ReactRouterProvider({\n children,\n Link: CustomLink,\n Image: CustomImage,\n}: {\n children: ReactNode;\n Link?: Framework['Link'];\n Image?: Framework['Image'];\n}) {\n return (\n <FrameworkProvider\n {...framework}\n Link={CustomLink ?? framework.Link}\n Image={CustomImage ?? framework.Image}\n >\n {children}\n </FrameworkProvider>\n );\n}\n"],"mappings":";;;;;;AAIA,MAAMA,YAAuB;CAC3B,cAAc;AACZ,SAAO,aAAa,CAAC;;CAEvB,YAAY;AACV,SAAO,WAAW;;CAEpB,YAAY;EACV,MAAM,WAAW,aAAa;EAC9B,MAAM,cAAc,gBAAgB;AAEpC,SAAO,eACE;GACL,KAAK,KAAK;AACR,aAAS,IAAI;;GAEf,UAAU;AACR,IAAK,YAAY,YAAY;;GAEhC,GACD,CAAC,UAAU,YAAY,CACxB;;CAEH,KAAK,EAAE,MAAM,UAAU,GAAG,SAAS;AACjC,SACE,oBAAC;GAAK,IAAI;GAAO,UAAU,WAAW,WAAW;GAAQ,GAAI;aAC1D,MAAM;IACF;;CAGZ;AAED,SAAgB,oBAAoB,EAClC,UACA,MAAM,YACN,OAAO,eAKN;AACD,QACE,oBAAC;EACC,GAAI;EACJ,MAAM,cAAc,UAAU;EAC9B,OAAO,eAAe,UAAU;EAE/B;GACiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tanstack.d.ts","names":[],"sources":["../../src/framework/tanstack.tsx"],"sourcesContent":[],"mappings":";;;;;;;;AAuDgB,iBAAA,gBAAA,CAAgB;EAAA,QAAA;EAAA,IAAA,EAExB,UAFwB;EAAA,KAAA,EAGvB;CAHuB,EAAA;EAC9B,QAAA,EAIU,SAJV;EACM,IAAA,CAAA,EAIC,SAJD,CAAA,MAAA,CAAA;EACC,KAAA,CAAA,EAIC,SAJD,CAAA,OAAA,CAAA;CAEG,CAAA,EAGX,kBAAA,CAAA,GAAA,CAAA,OAHW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"tanstack.js","names":["framework: Framework"],"sources":["../../src/framework/tanstack.tsx"],"sourcesContent":["import { type ReactNode, useRef, useMemo } from 'react';\nimport { type Framework, FrameworkProvider } from '@/framework/index';\nimport { useParams, Link, useRouter, useRouterState } from '@tanstack/react-router';\n\nconst framework: Framework = {\n Link({ href, prefetch = true, ...props }) {\n return (\n <Link to={href} preload={prefetch ? 'intent' : false} {...props}>\n {props.children}\n </Link>\n );\n },\n usePathname() {\n const { isLoading, pathname } = useRouterState({\n select: (state) => ({\n isLoading: state.isLoading,\n pathname: state.location.pathname,\n }),\n });\n\n const activePathname = useRef(pathname);\n return useMemo(() => {\n if (isLoading) {\n return activePathname.current;\n }\n\n activePathname.current = pathname;\n return pathname;\n }, [isLoading, pathname]);\n },\n useRouter() {\n const router = useRouter();\n\n return useMemo(\n () => ({\n push(url) {\n void router.navigate({\n href: url,\n });\n },\n refresh() {\n void router.invalidate();\n },\n }),\n [router],\n );\n },\n useParams() {\n return useParams({ strict: false });\n },\n};\n\n/**\n * Fumadocs adapter for Tanstack Router/Start\n */\nexport function TanstackProvider({\n children,\n Link: CustomLink,\n Image: CustomImage,\n}: {\n children: ReactNode;\n Link?: Framework['Link'];\n Image?: Framework['Image'];\n}) {\n return (\n <FrameworkProvider\n {...framework}\n Link={CustomLink ?? framework.Link}\n Image={CustomImage ?? framework.Image}\n >\n {children}\n </FrameworkProvider>\n );\n}\n"],"mappings":";;;;;;AAIA,MAAMA,YAAuB;CAC3B,KAAK,EAAE,MAAM,WAAW,MAAM,GAAG,SAAS;AACxC,SACE,oBAAC;GAAK,IAAI;GAAM,SAAS,WAAW,WAAW;GAAO,GAAI;aACvD,MAAM;IACF;;CAGX,cAAc;EACZ,MAAM,EAAE,WAAW,aAAa,eAAe,EAC7C,SAAS,WAAW;GAClB,WAAW,MAAM;GACjB,UAAU,MAAM,SAAS;GAC1B,GACF,CAAC;EAEF,MAAM,iBAAiB,OAAO,SAAS;AACvC,SAAO,cAAc;AACnB,OAAI,UACF,QAAO,eAAe;AAGxB,kBAAe,UAAU;AACzB,UAAO;KACN,CAAC,WAAW,SAAS,CAAC;;CAE3B,YAAY;EACV,MAAM,SAAS,WAAW;AAE1B,SAAO,eACE;GACL,KAAK,KAAK;AACR,IAAK,OAAO,SAAS,EACnB,MAAM,KACP,CAAC;;GAEJ,UAAU;AACR,IAAK,OAAO,YAAY;;GAE3B,GACD,CAAC,OAAO,CACT;;CAEH,YAAY;AACV,SAAO,UAAU,EAAE,QAAQ,OAAO,CAAC;;CAEtC;;;;AAKD,SAAgB,iBAAiB,EAC/B,UACA,MAAM,YACN,OAAO,eAKN;AACD,QACE,oBAAC;EACC,GAAI;EACJ,MAAM,cAAc,UAAU;EAC9B,OAAO,eAAe,UAAU;EAE/B;GACiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"waku.d.ts","names":[],"sources":["../../src/framework/waku.tsx"],"sourcesContent":[],"mappings":";;;;;iBA+CgB,YAAA;;QAER;SACC;;YAEG;SACH;EANO,KAAA,CAAA,EAON,SAPkB,CAAA,OAAA,CAAA;CAC1B,CAAA,EAOD,kBAAA,CAAA,GAAA,CAAA,OAPC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"waku.js","names":["framework: Framework","WakuLink"],"sources":["../../src/framework/waku.tsx"],"sourcesContent":["'use client';\n\nimport { type ReactNode, useMemo } from 'react';\nimport { Link as WakuLink, useRouter } from 'waku';\nimport { type Framework, FrameworkProvider } from './index.js';\n\nconst framework: Framework = {\n usePathname() {\n const { path } = useRouter();\n return path;\n },\n useParams() {\n const { query } = useRouter();\n return useMemo(() => {\n const params = new URLSearchParams(query);\n return Object.fromEntries(\n Array.from(params.entries()).map(([key, value]) => [\n key,\n Array.isArray(value) ? value[0] : value,\n ]),\n );\n }, [query]);\n },\n useRouter() {\n const router = useRouter();\n\n return useMemo(\n () => ({\n push(url: string) {\n void router.push(url);\n },\n refresh() {\n void router.push(router.path);\n },\n }),\n [router],\n );\n },\n Link({ href, prefetch = true, ...props }) {\n return (\n <WakuLink to={href!} unstable_prefetchOnEnter={prefetch} {...props}>\n {props.children}\n </WakuLink>\n );\n },\n};\n\nexport function WakuProvider({\n children,\n Link: CustomLink,\n Image: CustomImage,\n}: {\n children: ReactNode;\n Link?: Framework['Link'];\n Image?: Framework['Image'];\n}) {\n return (\n <FrameworkProvider\n {...framework}\n Link={CustomLink ?? framework.Link}\n Image={CustomImage ?? framework.Image}\n >\n {children}\n </FrameworkProvider>\n );\n}\n"],"mappings":";;;;;;;;AAMA,MAAMA,YAAuB;CAC3B,cAAc;EACZ,MAAM,EAAE,SAAS,WAAW;AAC5B,SAAO;;CAET,YAAY;EACV,MAAM,EAAE,UAAU,WAAW;AAC7B,SAAO,cAAc;GACnB,MAAM,SAAS,IAAI,gBAAgB,MAAM;AACzC,UAAO,OAAO,YACZ,MAAM,KAAK,OAAO,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CACjD,KACA,MAAM,QAAQ,MAAM,GAAG,MAAM,KAAK,MACnC,CAAC,CACH;KACA,CAAC,MAAM,CAAC;;CAEb,YAAY;EACV,MAAM,SAAS,WAAW;AAE1B,SAAO,eACE;GACL,KAAK,KAAa;AAChB,IAAK,OAAO,KAAK,IAAI;;GAEvB,UAAU;AACR,IAAK,OAAO,KAAK,OAAO,KAAK;;GAEhC,GACD,CAAC,OAAO,CACT;;CAEH,KAAK,EAAE,MAAM,WAAW,MAAM,GAAG,SAAS;AACxC,SACE,oBAACC;GAAS,IAAI;GAAO,0BAA0B;GAAU,GAAI;aAC1D,MAAM;IACE;;CAGhB;AAED,SAAgB,aAAa,EAC3B,UACA,MAAM,YACN,OAAO,eAKN;AACD,QACE,oBAAC;EACC,GAAI;EACJ,MAAM,cAAc,UAAU;EAC9B,OAAO,eAAe,UAAU;EAE/B;GACiB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../../src/highlight/client.tsx"],"sourcesContent":[],"mappings":";;;;;;;AAWA;;;AAIG,iBAJa,QAAA,CAIb,IAAA,EAAA,MAAA,EAAA,OAAA,EAFQ,gBAER,EAAA,IAAA,CAAA,EADM,cACN,CAAA,EAAA,SAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":["promises: Record<string, Promise<ReactNode>>"],"sources":["../../src/highlight/client.tsx"],"sourcesContent":["'use client';\nimport { type DependencyList, type ReactNode, use, useMemo } from 'react';\nimport { highlight, type HighlightOptions } from './shiki';\n\nconst promises: Record<string, Promise<ReactNode>> = {};\n\n/**\n * get highlighted results, should be used with React Suspense API.\n *\n * note: results are cached with (lang, code) as keys, if this is not the desired behaviour, pass a `deps` instead.\n */\nexport function useShiki(\n code: string,\n options: HighlightOptions,\n deps?: DependencyList,\n): ReactNode {\n const key = useMemo(() => {\n return deps ? JSON.stringify(deps) : `${options.lang}:${code}`;\n }, [code, deps, options.lang]);\n\n return use((promises[key] ??= highlight(code, options)));\n}\n"],"mappings":";;;;;;AAIA,MAAMA,WAA+C,EAAE;;;;;;AAOvD,SAAgB,SACd,MACA,SACA,MACW;CACX,MAAM,MAAM,cAAc;AACxB,SAAO,OAAO,KAAK,UAAU,KAAK,GAAG,GAAG,QAAQ,KAAK,GAAG;IACvD;EAAC;EAAM;EAAM,QAAQ;EAAK,CAAC;AAE9B,QAAO,IAAK,SAAS,SAAS,UAAU,MAAM,QAAQ,CAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/i18n/index.ts"],"sourcesContent":["export interface I18nConfig<Languages extends string = string> {\n /**\n * Supported locale codes.\n *\n * A page tree will be built for each language.\n */\n languages: Languages[];\n\n /**\n * Default locale if not specified\n */\n defaultLanguage: Languages;\n\n /**\n * Don't show the locale prefix on URL.\n *\n * - `always`: Always hide the prefix\n * - `default-locale`: Only hide the default locale\n * - `never`: Never hide the prefix\n *\n * This API uses `NextResponse.rewrite`.\n *\n * @defaultValue 'never'\n */\n hideLocale?: 'always' | 'default-locale' | 'never';\n\n /**\n * Used by `loader()`, specify the way to parse i18n file structure.\n *\n * @defaultValue 'dot'\n */\n parser?: 'dot' | 'dir' | 'none';\n\n /**\n * the fallback language when the page has no translations available for a given locale.\n *\n * Default to ``defaultLanguage`, no fallback when set to `null`.\n */\n fallbackLanguage?: Languages | null;\n}\n\nexport function defineI18n<Languages extends string>(\n config: I18nConfig<Languages>,\n): I18nConfig<Languages> {\n return config;\n}\n"],"mappings":";AAyCA,SAAgB,WACd,QACuB;AACvB,QAAO"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.d.ts","names":[],"sources":["../../src/i18n/middleware.ts"],"sourcesContent":[],"mappings":";;;;;UAMU,iBAAA,SAA0B;;AAFyB;AAgB7D;;;EASyC,MAAA,CAAA,EAjB9B,YAiB8B,GAAA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,GAAA,MAAA,CAAA;EAKzB;;;EAGH,UAAA,CAAA,EAAA,MAgBZ;AAED;AACE,UApCe,YAAA,CAoCf;EACA;;;EAGA,GAAA,EAAA,CAAA,GAAA,EApCW,OAoCX,EAAA,GAAA,MAAA,GAAA,SAAA;EACC;;;aAhCU,4BAA4B;;;;gBAKzB,YAAY;;cAGf,kBAAkB;iBAkBf,oBAAA;;;;;;GAMb,oBAAoB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"middleware.js","names":["DefaultFormatter: URLFormatter","formatter: URLFormatter","matchLocale"],"sources":["../../src/i18n/middleware.ts"],"sourcesContent":["import { match as matchLocale } from '@formatjs/intl-localematcher';\nimport { type NextProxy, NextResponse } from 'next/server';\nimport type { I18nConfig } from '@/i18n';\nimport { getNegotiator } from '@/negotiation';\nimport type { NextURL } from 'next/dist/server/web/next-url';\n\ninterface MiddlewareOptions extends I18nConfig {\n /**\n * Either:\n * - A formatter object\n * - A function that adds the locale prefix to pathname\n */\n format?: URLFormatter | ((locale: string, pathname: string) => string);\n\n /**\n * the cookie to store locale code when `hideLocale` is set to `always`.\n */\n cookieName?: string;\n}\n\nexport interface URLFormatter {\n /**\n * get locale code from request URL\n */\n get: (url: NextURL) => string | undefined;\n\n /**\n * add locale code to request URL (which is missing the locale).\n */\n add: (url: NextURL, locale: string) => URL;\n\n /**\n * remove locale code from request URL\n */\n remove: (url: NextURL) => URL;\n}\n\nexport const DefaultFormatter: URLFormatter = {\n get(url) {\n const segs = url.pathname.split('/');\n if (segs.length > 1 && segs[1]) return segs[1];\n },\n add(url, locale) {\n const next = new URL(url);\n next.pathname = `${url.basePath}/${locale}/${url.pathname}`.replaceAll(/\\/+/g, '/');\n return next;\n },\n remove(url) {\n const next = new URL(url);\n const pathname = url.pathname.split('/').slice(2).join('/');\n next.pathname = `${url.basePath}/${pathname}`.replaceAll(/\\/+/g, '/');\n return next;\n },\n};\n\nexport function createI18nMiddleware({\n languages,\n defaultLanguage,\n format = DefaultFormatter,\n cookieName = 'FD_LOCALE',\n hideLocale = 'never',\n}: MiddlewareOptions): NextProxy {\n let formatter: URLFormatter;\n if (typeof format === 'function') {\n formatter = {\n ...DefaultFormatter,\n add(url, locale) {\n const next = new URL(url);\n next.pathname = format(locale, url.pathname);\n return next;\n },\n };\n } else {\n formatter = format;\n }\n\n return (request) => {\n const url = request.nextUrl;\n let pathLocale = formatter.get(url);\n if (pathLocale && !languages.includes(pathLocale)) pathLocale = undefined;\n\n if (!pathLocale) {\n if (hideLocale === 'default-locale') {\n return NextResponse.rewrite(formatter.add(url, defaultLanguage));\n }\n\n const finalLanguages = getNegotiator(request).languages(languages);\n const preferred = matchLocale(finalLanguages, languages, defaultLanguage);\n if (hideLocale === 'always') {\n const locale = request.cookies.get(cookieName)?.value ?? preferred;\n\n return NextResponse.rewrite(formatter.add(url, locale));\n }\n\n return NextResponse.redirect(formatter.add(url, preferred));\n }\n\n // Remove explicit locale\n if (\n hideLocale === 'always' ||\n (hideLocale === 'default-locale' && pathLocale === defaultLanguage)\n ) {\n const res = NextResponse.redirect(formatter.remove(url));\n res.cookies.set(cookieName, pathLocale);\n return res;\n }\n\n return NextResponse.next();\n };\n}\n"],"mappings":";;;;;AAqCA,MAAaA,mBAAiC;CAC5C,IAAI,KAAK;EACP,MAAM,OAAO,IAAI,SAAS,MAAM,IAAI;AACpC,MAAI,KAAK,SAAS,KAAK,KAAK,GAAI,QAAO,KAAK;;CAE9C,IAAI,KAAK,QAAQ;EACf,MAAM,OAAO,IAAI,IAAI,IAAI;AACzB,OAAK,WAAW,GAAG,IAAI,SAAS,GAAG,OAAO,GAAG,IAAI,WAAW,WAAW,QAAQ,IAAI;AACnF,SAAO;;CAET,OAAO,KAAK;EACV,MAAM,OAAO,IAAI,IAAI,IAAI;EACzB,MAAM,WAAW,IAAI,SAAS,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,IAAI;AAC3D,OAAK,WAAW,GAAG,IAAI,SAAS,GAAG,WAAW,WAAW,QAAQ,IAAI;AACrE,SAAO;;CAEV;AAED,SAAgB,qBAAqB,EACnC,WACA,iBACA,SAAS,kBACT,aAAa,aACb,aAAa,WACkB;CAC/B,IAAIC;AACJ,KAAI,OAAO,WAAW,WACpB,aAAY;EACV,GAAG;EACH,IAAI,KAAK,QAAQ;GACf,MAAM,OAAO,IAAI,IAAI,IAAI;AACzB,QAAK,WAAW,OAAO,QAAQ,IAAI,SAAS;AAC5C,UAAO;;EAEV;KAED,aAAY;AAGd,SAAQ,YAAY;EAClB,MAAM,MAAM,QAAQ;EACpB,IAAI,aAAa,UAAU,IAAI,IAAI;AACnC,MAAI,cAAc,CAAC,UAAU,SAAS,WAAW,CAAE,cAAa;AAEhE,MAAI,CAAC,YAAY;AACf,OAAI,eAAe,iBACjB,QAAO,aAAa,QAAQ,UAAU,IAAI,KAAK,gBAAgB,CAAC;GAIlE,MAAM,YAAYC,MADK,cAAc,QAAQ,CAAC,UAAU,UAAU,EACpB,WAAW,gBAAgB;AACzE,OAAI,eAAe,UAAU;IAC3B,MAAM,SAAS,QAAQ,QAAQ,IAAI,WAAW,EAAE,SAAS;AAEzD,WAAO,aAAa,QAAQ,UAAU,IAAI,KAAK,OAAO,CAAC;;AAGzD,UAAO,aAAa,SAAS,UAAU,IAAI,KAAK,UAAU,CAAC;;AAI7D,MACE,eAAe,YACd,eAAe,oBAAoB,eAAe,iBACnD;GACA,MAAM,MAAM,aAAa,SAAS,UAAU,OAAO,IAAI,CAAC;AACxD,OAAI,QAAQ,IAAI,YAAY,WAAW;AACvC,UAAO;;AAGT,SAAO,aAAa,MAAM"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"icon-CL3r1pNG.js","names":[],"sources":["../src/source/plugins/icon.ts"],"sourcesContent":["import type { LoaderPlugin } from '@/source';\nimport type { ReactNode } from 'react';\nimport type * as PageTree from '@/page-tree/definitions';\n\nexport type IconResolver = (icon: string | undefined) => ReactNode;\n\nexport function iconPlugin(resolveIcon: IconResolver): LoaderPlugin {\n function replaceIcon<T extends PageTree.Node>(node: T): T {\n if (node.icon === undefined || typeof node.icon === 'string')\n node.icon = resolveIcon(node.icon);\n\n return node;\n }\n\n return {\n name: 'fumadocs:icon',\n transformPageTree: {\n file: replaceIcon,\n folder: replaceIcon,\n separator: replaceIcon,\n },\n };\n}\n"],"mappings":";AAMA,SAAgB,WAAW,aAAyC;CAClE,SAAS,YAAqC,MAAY;AACxD,MAAI,KAAK,SAAS,UAAa,OAAO,KAAK,SAAS,SAClD,MAAK,OAAO,YAAY,KAAK,KAAK;AAEpC,SAAO;;AAGT,QAAO;EACL,MAAM;EACN,mBAAmB;GACjB,MAAM;GACN,QAAQ;GACR,WAAW;GACZ;EACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DxhhLscI.d.ts","names":[],"sources":["../src/i18n/index.ts"],"sourcesContent":[],"mappings":";UAAiB;EAAA;;;;;EAyCD,SAAA,EAnCH,SAmCa,EAAA;EACL;;;EAClB,eAAA,EAhCgB,SAgChB;EAAU;;;;;;;;;;;;;;;;;;;;;;;qBALQ;;iBAGL,6CACN,WAAW,aAClB,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-k5KwKJ_c.d.ts","names":[],"sources":["../src/source/source.ts","../src/source/storage/file-system.ts","../src/source/storage/content.ts","../src/source/page-tree/builder.ts","../src/source/plugins/slugs.ts","../src/source/plugins/icon.ts","../src/source/loader.ts","../src/source/path.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"link.d.ts","names":[],"sources":["../src/link.tsx"],"sourcesContent":[],"mappings":";;;;UAIiB,SAAA,SAAkB,qBAAqB;;;AAAxD;AAYC;;EAES,QAAA,CAAA,EAAA,OAAA;EAAA;;;;;cAAJ,MAAI,MAAA,CAAA,0BAAA,YAAA,MAAA,CAAA,cAAA"}
package/dist/link.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"link.js","names":["Base"],"sources":["../src/link.tsx"],"sourcesContent":["'use client';\nimport { type AnchorHTMLAttributes, forwardRef } from 'react';\nimport { Link as Base } from '@/framework';\n\nexport interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /**\n * If the href is an external URL\n *\n * automatically determined by default\n */\n external?: boolean;\n\n /**\n * Prefetch links, supported on Next.js\n */\n prefetch?: boolean;\n}\n\nconst Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n href = '#',\n // any protocol\n external = href.match(/^\\w+:/) ||\n // protocol relative URL\n href.startsWith('//'),\n prefetch,\n children,\n ...props\n },\n ref,\n ) => {\n if (external) {\n return (\n <a ref={ref} href={href} rel=\"noreferrer noopener\" target=\"_blank\" {...props}>\n {children}\n </a>\n );\n }\n\n return (\n <Base ref={ref} href={href} prefetch={prefetch} {...props}>\n {children}\n </Base>\n );\n },\n);\n\nLink.displayName = 'Link';\n\nexport { Link as default };\n"],"mappings":";;;;;;;AAkBA,MAAM,OAAO,YAET,EACE,OAAO,KAEP,WAAW,KAAK,MAAM,QAAQ,IAE5B,KAAK,WAAW,KAAK,EACvB,UACA,UACA,GAAG,SAEL,QACG;AACH,KAAI,SACF,QACE,oBAAC;EAAO;EAAW;EAAM,KAAI;EAAsB,QAAO;EAAS,GAAI;EACpE;GACC;AAIR,QACE,oBAACA;EAAU;EAAW;EAAgB;EAAU,GAAI;EACjD;GACI;EAGZ;AAED,KAAK,cAAc"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mdast-utils-B8O-41y4.js","names":[],"sources":["../src/mdx-plugins/mdast-utils.ts"],"sourcesContent":["import type { RootContent } from 'mdast';\nimport { valueToEstree } from 'estree-util-value-to-estree';\n\nexport function flattenNode(node: RootContent): string {\n if ('children' in node) return node.children.map((child) => flattenNode(child)).join('');\n\n if ('value' in node && typeof node.value === 'string') return node.value;\n\n return '';\n}\n\nexport function toMdxExport(name: string, value: unknown): RootContent {\n return {\n type: 'mdxjsEsm',\n value: '',\n data: {\n estree: {\n type: 'Program',\n sourceType: 'module',\n body: [\n {\n type: 'ExportNamedDeclaration',\n attributes: [],\n specifiers: [],\n source: null,\n declaration: {\n type: 'VariableDeclaration',\n kind: 'let',\n declarations: [\n {\n type: 'VariableDeclarator',\n id: {\n type: 'Identifier',\n name,\n },\n init: valueToEstree(value),\n },\n ],\n },\n },\n ],\n },\n },\n };\n}\n"],"mappings":";;;AAGA,SAAgB,YAAY,MAA2B;AACrD,KAAI,cAAc,KAAM,QAAO,KAAK,SAAS,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC,KAAK,GAAG;AAExF,KAAI,WAAW,QAAQ,OAAO,KAAK,UAAU,SAAU,QAAO,KAAK;AAEnE,QAAO;;AAGT,SAAgB,YAAY,MAAc,OAA6B;AACrE,QAAO;EACL,MAAM;EACN,OAAO;EACP,MAAM,EACJ,QAAQ;GACN,MAAM;GACN,YAAY;GACZ,MAAM,CACJ;IACE,MAAM;IACN,YAAY,EAAE;IACd,YAAY,EAAE;IACd,QAAQ;IACR,aAAa;KACX,MAAM;KACN,MAAM;KACN,cAAc,CACZ;MACE,MAAM;MACN,IAAI;OACF,MAAM;OACN;OACD;MACD,MAAM,cAAc,MAAM;MAC3B,CACF;KACF;IACF,CACF;GACF,EACF;EACF"}