fumadocs-ui 16.4.1 → 16.4.2

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 (266) hide show
  1. package/css/preset.css +2 -4
  2. package/dist/_virtual/rolldown_runtime.js +36 -0
  3. package/dist/components/accordion.d.ts +24 -7
  4. package/dist/components/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion.js +65 -38
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/banner.d.ts +33 -22
  8. package/dist/components/banner.d.ts.map +1 -1
  9. package/dist/components/banner.js +63 -47
  10. package/dist/components/banner.js.map +1 -0
  11. package/dist/components/callout.d.ts +41 -17
  12. package/dist/components/callout.d.ts.map +1 -1
  13. package/dist/components/callout.js +57 -28
  14. package/dist/components/callout.js.map +1 -0
  15. package/dist/components/card.d.ts +19 -9
  16. package/dist/components/card.d.ts.map +1 -1
  17. package/dist/components/card.js +39 -8
  18. package/dist/components/card.js.map +1 -0
  19. package/dist/components/codeblock.d.ts +61 -40
  20. package/dist/components/codeblock.d.ts.map +1 -1
  21. package/dist/components/codeblock.js +116 -58
  22. package/dist/components/codeblock.js.map +1 -0
  23. package/dist/components/dialog/search-algolia.d.ts +37 -23
  24. package/dist/components/dialog/search-algolia.d.ts.map +1 -1
  25. package/dist/components/dialog/search-algolia.js +64 -31
  26. package/dist/components/dialog/search-algolia.js.map +1 -0
  27. package/dist/components/dialog/search-default.d.ts +42 -27
  28. package/dist/components/dialog/search-default.d.ts.map +1 -1
  29. package/dist/components/dialog/search-default.js +64 -38
  30. package/dist/components/dialog/search-default.js.map +1 -0
  31. package/dist/components/dialog/search-orama.d.ts +41 -25
  32. package/dist/components/dialog/search-orama.d.ts.map +1 -1
  33. package/dist/components/dialog/search-orama.js +68 -35
  34. package/dist/components/dialog/search-orama.js.map +1 -0
  35. package/dist/components/dialog/search.d.ts +103 -64
  36. package/dist/components/dialog/search.d.ts.map +1 -1
  37. package/dist/components/dialog/search.js +264 -185
  38. package/dist/components/dialog/search.js.map +1 -0
  39. package/dist/components/dynamic-codeblock.d.ts +30 -19
  40. package/dist/components/dynamic-codeblock.d.ts.map +1 -1
  41. package/dist/components/dynamic-codeblock.js +60 -27
  42. package/dist/components/dynamic-codeblock.js.map +1 -0
  43. package/dist/components/files.d.ts +32 -16
  44. package/dist/components/files.d.ts.map +1 -1
  45. package/dist/components/files.js +40 -14
  46. package/dist/components/files.js.map +1 -0
  47. package/dist/components/github-info.d.ts +18 -7
  48. package/dist/components/github-info.d.ts.map +1 -1
  49. package/dist/components/github-info.js +63 -48
  50. package/dist/components/github-info.js.map +1 -0
  51. package/dist/components/heading.d.ts +11 -4
  52. package/dist/components/heading.d.ts.map +1 -1
  53. package/dist/components/heading.js +28 -8
  54. package/dist/components/heading.js.map +1 -0
  55. package/dist/components/image-zoom-CtfZieBH.css +80 -0
  56. package/dist/components/image-zoom-CtfZieBH.css.map +1 -0
  57. package/dist/components/image-zoom.d.ts +23 -14
  58. package/dist/components/image-zoom.d.ts.map +1 -1
  59. package/dist/components/image-zoom.js +32 -19
  60. package/dist/components/image-zoom.js.map +1 -0
  61. package/dist/components/image-zoom2.js +1 -0
  62. package/dist/components/inline-toc.d.ts +14 -6
  63. package/dist/components/inline-toc.d.ts.map +1 -1
  64. package/dist/components/inline-toc.js +28 -8
  65. package/dist/components/inline-toc.js.map +1 -0
  66. package/dist/components/sidebar/base.d.ts +102 -65
  67. package/dist/components/sidebar/base.d.ts.map +1 -1
  68. package/dist/components/sidebar/base.js +256 -180
  69. package/dist/components/sidebar/base.js.map +1 -0
  70. package/dist/components/sidebar/link-item.d.ts +23 -10
  71. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  72. package/dist/components/sidebar/link-item.js +32 -12
  73. package/dist/components/sidebar/link-item.js.map +1 -0
  74. package/dist/components/sidebar/page-tree.d.ts +28 -17
  75. package/dist/components/sidebar/page-tree.d.ts.map +1 -1
  76. package/dist/components/sidebar/page-tree.js +57 -33
  77. package/dist/components/sidebar/page-tree.js.map +1 -0
  78. package/dist/components/sidebar/tabs/dropdown.d.ts +18 -9
  79. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  80. package/dist/components/sidebar/tabs/dropdown.js +75 -31
  81. package/dist/components/sidebar/tabs/dropdown.js.map +1 -0
  82. package/dist/components/sidebar/tabs/index.d.ts +24 -18
  83. package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
  84. package/dist/components/sidebar/tabs/index.js +45 -45
  85. package/dist/components/sidebar/tabs/index.js.map +1 -0
  86. package/dist/components/steps.d.ts +16 -7
  87. package/dist/components/steps.d.ts.map +1 -1
  88. package/dist/components/steps.js +17 -5
  89. package/dist/components/steps.js.map +1 -0
  90. package/dist/components/tabs.d.ts +49 -28
  91. package/dist/components/tabs.d.ts.map +1 -1
  92. package/dist/components/tabs.js +88 -51
  93. package/dist/components/tabs.js.map +1 -0
  94. package/dist/components/toc/clerk.d.ts +1 -2
  95. package/dist/components/toc/clerk.js +12 -1
  96. package/dist/components/toc/clerk.js.map +1 -0
  97. package/dist/components/toc/default.d.ts +1 -2
  98. package/dist/components/toc/default.js +12 -1
  99. package/dist/components/toc/default.js.map +1 -0
  100. package/dist/components/toc/index.d.ts +1 -2
  101. package/dist/components/toc/index.js +12 -1
  102. package/dist/components/toc/index.js.map +1 -0
  103. package/dist/components/type-table.d.ts +36 -29
  104. package/dist/components/type-table.d.ts.map +1 -1
  105. package/dist/components/type-table.js +106 -25
  106. package/dist/components/type-table.js.map +1 -0
  107. package/dist/components/ui/accordion.d.ts +31 -7
  108. package/dist/components/ui/accordion.d.ts.map +1 -1
  109. package/dist/components/ui/accordion.js +40 -14
  110. package/dist/components/ui/accordion.js.map +1 -0
  111. package/dist/components/ui/button.d.ts +12 -7
  112. package/dist/components/ui/button.d.ts.map +1 -1
  113. package/dist/components/ui/button.js +21 -18
  114. package/dist/components/ui/button.js.map +1 -0
  115. package/dist/components/ui/collapsible.d.ts +12 -8
  116. package/dist/components/ui/collapsible.d.ts.map +1 -1
  117. package/dist/components/ui/collapsible.js +21 -11
  118. package/dist/components/ui/collapsible.js.map +1 -0
  119. package/dist/components/ui/navigation-menu.d.ts +8 -5
  120. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  121. package/dist/components/ui/navigation-menu.js +36 -9
  122. package/dist/components/ui/navigation-menu.js.map +1 -0
  123. package/dist/components/ui/popover.d.ts +6 -3
  124. package/dist/components/ui/popover.d.ts.map +1 -1
  125. package/dist/components/ui/popover.js +19 -6
  126. package/dist/components/ui/popover.js.map +1 -0
  127. package/dist/components/ui/scroll-area.d.ts +7 -4
  128. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  129. package/dist/components/ui/scroll-area.js +33 -7
  130. package/dist/components/ui/scroll-area.js.map +1 -0
  131. package/dist/components/ui/tabs.d.ts +37 -19
  132. package/dist/components/ui/tabs.d.ts.map +1 -1
  133. package/dist/components/ui/tabs.js +75 -73
  134. package/dist/components/ui/tabs.js.map +1 -0
  135. package/dist/contexts/i18n.d.ts +1 -2
  136. package/dist/contexts/i18n.js +12 -1
  137. package/dist/contexts/i18n.js.map +1 -0
  138. package/dist/contexts/search.d.ts +7 -1
  139. package/dist/contexts/search.d.ts.map +1 -1
  140. package/dist/contexts/search.js +12 -1
  141. package/dist/contexts/search.js.map +1 -0
  142. package/dist/contexts/tree.d.ts +1 -2
  143. package/dist/contexts/tree.js +12 -1
  144. package/dist/contexts/tree.js.map +1 -0
  145. package/dist/i18n.d.ts +1 -2
  146. package/dist/i18n.js +3 -1
  147. package/dist/layouts/docs/client.d.ts +30 -13
  148. package/dist/layouts/docs/client.d.ts.map +1 -1
  149. package/dist/layouts/docs/client.js +61 -34
  150. package/dist/layouts/docs/client.js.map +1 -0
  151. package/dist/layouts/docs/index.d.ts +57 -33
  152. package/dist/layouts/docs/index.d.ts.map +1 -1
  153. package/dist/layouts/docs/index.js +178 -68
  154. package/dist/layouts/docs/index.js.map +1 -0
  155. package/dist/layouts/docs/page/client.d.ts +43 -21
  156. package/dist/layouts/docs/page/client.d.ts.map +1 -1
  157. package/dist/layouts/docs/page/client.js +213 -105
  158. package/dist/layouts/docs/page/client.js.map +1 -0
  159. package/dist/layouts/docs/page/index.d.ts +82 -46
  160. package/dist/layouts/docs/page/index.d.ts.map +1 -1
  161. package/dist/layouts/docs/page/index.js +98 -45
  162. package/dist/layouts/docs/page/index.js.map +1 -0
  163. package/dist/layouts/docs/sidebar.d.ts +57 -16
  164. package/dist/layouts/docs/sidebar.d.ts.map +1 -1
  165. package/dist/layouts/docs/sidebar.js +135 -82
  166. package/dist/layouts/docs/sidebar.js.map +1 -0
  167. package/dist/layouts/home/client.d.ts +18 -5
  168. package/dist/layouts/home/client.d.ts.map +1 -1
  169. package/dist/layouts/home/client.js +252 -103
  170. package/dist/layouts/home/client.js.map +1 -0
  171. package/dist/layouts/home/index.d.ts +15 -10
  172. package/dist/layouts/home/index.d.ts.map +1 -1
  173. package/dist/layouts/home/index.js +24 -7
  174. package/dist/layouts/home/index.js.map +1 -0
  175. package/dist/layouts/home/navbar.d.ts +13 -6
  176. package/dist/layouts/home/navbar.d.ts.map +1 -1
  177. package/dist/layouts/home/navbar.js +34 -12
  178. package/dist/layouts/home/navbar.js.map +1 -0
  179. package/dist/layouts/notebook/client.d.ts +44 -20
  180. package/dist/layouts/notebook/client.d.ts.map +1 -1
  181. package/dist/layouts/notebook/client.js +148 -93
  182. package/dist/layouts/notebook/client.js.map +1 -0
  183. package/dist/layouts/notebook/index.d.ts +34 -30
  184. package/dist/layouts/notebook/index.d.ts.map +1 -1
  185. package/dist/layouts/notebook/index.js +216 -90
  186. package/dist/layouts/notebook/index.js.map +1 -0
  187. package/dist/layouts/notebook/page/client.d.ts +43 -21
  188. package/dist/layouts/notebook/page/client.d.ts.map +1 -1
  189. package/dist/layouts/notebook/page/client.js +213 -105
  190. package/dist/layouts/notebook/page/client.js.map +1 -0
  191. package/dist/layouts/notebook/page/index.d.ts +82 -46
  192. package/dist/layouts/notebook/page/index.d.ts.map +1 -1
  193. package/dist/layouts/notebook/page/index.js +98 -45
  194. package/dist/layouts/notebook/page/index.js.map +1 -0
  195. package/dist/layouts/notebook/sidebar.d.ts +62 -20
  196. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  197. package/dist/layouts/notebook/sidebar.js +130 -88
  198. package/dist/layouts/notebook/sidebar.js.map +1 -0
  199. package/dist/layouts/shared/index.d.ts +62 -50
  200. package/dist/layouts/shared/index.d.ts.map +1 -1
  201. package/dist/layouts/shared/index.js +36 -20
  202. package/dist/layouts/shared/index.js.map +1 -0
  203. package/dist/layouts/shared/language-toggle.d.ts +9 -4
  204. package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
  205. package/dist/layouts/shared/language-toggle.js +44 -21
  206. package/dist/layouts/shared/language-toggle.js.map +1 -0
  207. package/dist/layouts/shared/search-toggle.d.ts +20 -8
  208. package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
  209. package/dist/layouts/shared/search-toggle.js +53 -24
  210. package/dist/layouts/shared/search-toggle.js.map +1 -0
  211. package/dist/layouts/shared/theme-toggle.d.ts +13 -4
  212. package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
  213. package/dist/layouts/shared/theme-toggle.js +58 -34
  214. package/dist/layouts/shared/theme-toggle.js.map +1 -0
  215. package/dist/mdx.d.ts +34 -29
  216. package/dist/mdx.d.ts.map +1 -1
  217. package/dist/mdx.js +68 -34
  218. package/dist/mdx.js.map +1 -0
  219. package/dist/mdx.server.d.ts +9 -5
  220. package/dist/mdx.server.d.ts.map +1 -1
  221. package/dist/mdx.server.js +21 -13
  222. package/dist/mdx.server.js.map +1 -0
  223. package/dist/og.d.ts +1 -2
  224. package/dist/og.js +3 -1
  225. package/dist/page.d.ts +30 -20
  226. package/dist/page.d.ts.map +1 -1
  227. package/dist/page.js +34 -18
  228. package/dist/page.js.map +1 -0
  229. package/dist/provider/base.d.ts +43 -33
  230. package/dist/provider/base.d.ts.map +1 -1
  231. package/dist/provider/base.js +37 -17
  232. package/dist/provider/base.js.map +1 -0
  233. package/dist/provider/next.d.ts +20 -12
  234. package/dist/provider/next.d.ts.map +1 -1
  235. package/dist/provider/next.js +19 -5
  236. package/dist/provider/next.js.map +1 -0
  237. package/dist/provider/react-router.d.ts +20 -12
  238. package/dist/provider/react-router.d.ts.map +1 -1
  239. package/dist/provider/react-router.js +19 -5
  240. package/dist/provider/react-router.js.map +1 -0
  241. package/dist/provider/tanstack.d.ts +20 -12
  242. package/dist/provider/tanstack.d.ts.map +1 -1
  243. package/dist/provider/tanstack.js +19 -5
  244. package/dist/provider/tanstack.js.map +1 -0
  245. package/dist/provider/waku.d.ts +20 -12
  246. package/dist/provider/waku.d.ts.map +1 -1
  247. package/dist/provider/waku.js +19 -5
  248. package/dist/provider/waku.js.map +1 -0
  249. package/dist/style.css +11 -13
  250. package/dist/utils/use-copy-button.d.ts +1 -2
  251. package/dist/utils/use-copy-button.js +3 -1
  252. package/dist/utils/use-footer-items.d.ts +1 -2
  253. package/dist/utils/use-footer-items.js +3 -1
  254. package/dist/utils/use-is-scroll-top.d.ts +1 -2
  255. package/dist/utils/use-is-scroll-top.js +3 -1
  256. package/package.json +51 -52
  257. package/dist/components/toc/clerk.d.ts.map +0 -1
  258. package/dist/components/toc/default.d.ts.map +0 -1
  259. package/dist/components/toc/index.d.ts.map +0 -1
  260. package/dist/contexts/i18n.d.ts.map +0 -1
  261. package/dist/contexts/tree.d.ts.map +0 -1
  262. package/dist/i18n.d.ts.map +0 -1
  263. package/dist/og.d.ts.map +0 -1
  264. package/dist/utils/use-copy-button.d.ts.map +0 -1
  265. package/dist/utils/use-footer-items.d.ts.map +0 -1
  266. package/dist/utils/use-is-scroll-top.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"page-tree.d.ts","sourceRoot":"","sources":["../../../src/components/sidebar/page-tree.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AACnE,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,KAAK,IAAI,MAAM,QAAQ,CAAC;AAEpC,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAA;KAAE,CAAC,CAAC;IAClC,MAAM,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;QAAC,QAAQ,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC3D,SAAS,EAAE,EAAE,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAA;KAAE,CAAC,CAAC;CAC7C;AAED,KAAK,kBAAkB,GAAG,IAAI,CAC5B,OAAO,IAAI,EACT,kBAAkB,GAClB,eAAe,GACf,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,aAAa,CAChB,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACrC,aAAa,EACb,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACZ,EAAE,kBAAkB,IAuCjB,YAAY,OAAO,CAAC,yBAAyB,CAAC,6CA6CjD"}
1
+ {"version":3,"file":"page-tree.d.ts","names":[],"sources":["../../../src/components/sidebar/page-tree.tsx"],"sourcesContent":[],"mappings":";;;;;;UAKiB,yBAAA;QACT;UAAW,QAAA,CAAS;EADX,CAAA,CAAA;EACE,MAAS,EAClB,EADkB,CAAA;IAApB,IAAA,EACa,QAAA,CAAS,MADtB;IACa,QAAS,EAAkB,SAAlB;EAAkB,CAAA,CAAA;EAAtC,SAAA,EACG,EADH,CAAA;IACc,IAAS,EAAT,QAAA,CAAS,SAAA;EAApB,CAAA,CAAA;;AACZ,KAEI,kBAAA,GAAqB,IAAH,CAAA,OACd,cAAA,EAAA,kBADqB,GAAA,eAAA,GAAA,mBAAA,GAAA,sBAAA,GAAA,sBAAA,GAAA,aAAA,CAAA;AAUd,iBAAA,sBAAA,CAAsB;EAAA,aAAA;EAAA,oBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,EAOnC,kBAPmC,CAAA,EAAA,CAAA,UAAA,EAoCQ,OApCR,CAoCgB,yBApChB,CAAA,EAAA,GAoC0C,mBAAA,CAAA,GAAA,CAAA,OApC1C"}
@@ -1,34 +1,58 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useTreeContext, useTreePath } from '../../contexts/tree.js';
3
- import { useMemo, Fragment } from 'react';
4
- export function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarSeparator, SidebarItem, }) {
5
- function PageTreeFolder({ item, children, }) {
6
- const path = useTreePath();
7
- return (_jsxs(SidebarFolder, { collapsible: item.collapsible, active: path.includes(item), defaultOpen: item.defaultOpen, children: [item.index ? (_jsxs(SidebarFolderLink, { href: item.index.url, external: item.index.external, children: [item.icon, item.name] })) : (_jsxs(SidebarFolderTrigger, { children: [item.icon, item.name] })), _jsx(SidebarFolderContent, { children: children })] }));
8
- }
9
- /**
10
- * Render sidebar items from page tree
11
- */
12
- return function SidebarPageTree(components) {
13
- const { root } = useTreeContext();
14
- const { Separator, Item, Folder = PageTreeFolder } = components;
15
- return useMemo(() => {
16
- function renderSidebarList(items) {
17
- return items.map((item, i) => {
18
- if (item.type === 'separator') {
19
- if (Separator)
20
- return _jsx(Separator, { item: item }, i);
21
- return (_jsxs(SidebarSeparator, { children: [item.icon, item.name] }, i));
22
- }
23
- if (item.type === 'folder') {
24
- return (_jsx(Folder, { item: item, children: renderSidebarList(item.children) }, i));
25
- }
26
- if (Item)
27
- return _jsx(Item, { item: item }, item.url);
28
- return (_jsx(SidebarItem, { href: item.url, external: item.external, icon: item.icon, children: item.name }, item.url));
29
- });
30
- }
31
- return (_jsx(Fragment, { children: renderSidebarList(root.children) }, root.$id));
32
- }, [Folder, Item, Separator, root]);
33
- };
1
+ import { tree_exports } from "../../contexts/tree.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Fragment as Fragment$1, useMemo } from "react";
4
+
5
+ //#region src/components/sidebar/page-tree.tsx
6
+ function createPageTreeRenderer({ SidebarFolder, SidebarFolderContent, SidebarFolderLink, SidebarFolderTrigger, SidebarSeparator, SidebarItem }) {
7
+ function PageTreeFolder({ item, children }) {
8
+ const path = (0, tree_exports.useTreePath)();
9
+ return /* @__PURE__ */ jsxs(SidebarFolder, {
10
+ collapsible: item.collapsible,
11
+ active: path.includes(item),
12
+ defaultOpen: item.defaultOpen,
13
+ children: [item.index ? /* @__PURE__ */ jsxs(SidebarFolderLink, {
14
+ href: item.index.url,
15
+ external: item.index.external,
16
+ children: [item.icon, item.name]
17
+ }) : /* @__PURE__ */ jsxs(SidebarFolderTrigger, { children: [item.icon, item.name] }), /* @__PURE__ */ jsx(SidebarFolderContent, { children })]
18
+ });
19
+ }
20
+ /**
21
+ * Render sidebar items from page tree
22
+ */
23
+ return function SidebarPageTree(components) {
24
+ const { root } = (0, tree_exports.useTreeContext)();
25
+ const { Separator, Item, Folder = PageTreeFolder } = components;
26
+ return useMemo(() => {
27
+ function renderSidebarList(items) {
28
+ return items.map((item, i) => {
29
+ if (item.type === "separator") {
30
+ if (Separator) return /* @__PURE__ */ jsx(Separator, { item }, i);
31
+ return /* @__PURE__ */ jsxs(SidebarSeparator, { children: [item.icon, item.name] }, i);
32
+ }
33
+ if (item.type === "folder") return /* @__PURE__ */ jsx(Folder, {
34
+ item,
35
+ children: renderSidebarList(item.children)
36
+ }, i);
37
+ if (Item) return /* @__PURE__ */ jsx(Item, { item }, item.url);
38
+ return /* @__PURE__ */ jsx(SidebarItem, {
39
+ href: item.url,
40
+ external: item.external,
41
+ icon: item.icon,
42
+ children: item.name
43
+ }, item.url);
44
+ });
45
+ }
46
+ return /* @__PURE__ */ jsx(Fragment$1, { children: renderSidebarList(root.children) }, root.$id);
47
+ }, [
48
+ Folder,
49
+ Item,
50
+ Separator,
51
+ root
52
+ ]);
53
+ };
34
54
  }
55
+
56
+ //#endregion
57
+ export { createPageTreeRenderer };
58
+ //# sourceMappingURL=page-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-tree.js","names":["Fragment"],"sources":["../../../src/components/sidebar/page-tree.tsx"],"sourcesContent":["import { useTreeContext, useTreePath } from '@/contexts/tree';\nimport { type FC, type ReactNode, useMemo, Fragment } from 'react';\nimport type * as PageTree from 'fumadocs-core/page-tree';\nimport type * as Base from './base';\n\nexport interface SidebarPageTreeComponents {\n Item: FC<{ item: PageTree.Item }>;\n Folder: FC<{ item: PageTree.Folder; children: ReactNode }>;\n Separator: FC<{ item: PageTree.Separator }>;\n}\n\ntype InternalComponents = Pick<\n typeof Base,\n | 'SidebarSeparator'\n | 'SidebarFolder'\n | 'SidebarFolderLink'\n | 'SidebarFolderContent'\n | 'SidebarFolderTrigger'\n | 'SidebarItem'\n>;\n\nexport function createPageTreeRenderer({\n SidebarFolder,\n SidebarFolderContent,\n SidebarFolderLink,\n SidebarFolderTrigger,\n SidebarSeparator,\n SidebarItem,\n}: InternalComponents) {\n function PageTreeFolder({ item, children }: { item: PageTree.Folder; children: ReactNode }) {\n const path = useTreePath();\n\n return (\n <SidebarFolder\n collapsible={item.collapsible}\n active={path.includes(item)}\n defaultOpen={item.defaultOpen}\n >\n {item.index ? (\n <SidebarFolderLink href={item.index.url} external={item.index.external}>\n {item.icon}\n {item.name}\n </SidebarFolderLink>\n ) : (\n <SidebarFolderTrigger>\n {item.icon}\n {item.name}\n </SidebarFolderTrigger>\n )}\n <SidebarFolderContent>{children}</SidebarFolderContent>\n </SidebarFolder>\n );\n }\n\n /**\n * Render sidebar items from page tree\n */\n return function SidebarPageTree(components: Partial<SidebarPageTreeComponents>) {\n const { root } = useTreeContext();\n const { Separator, Item, Folder = PageTreeFolder } = components;\n\n return useMemo(() => {\n function renderSidebarList(items: PageTree.Node[]) {\n return items.map((item, i) => {\n if (item.type === 'separator') {\n if (Separator) return <Separator key={i} item={item} />;\n return (\n <SidebarSeparator key={i}>\n {item.icon}\n {item.name}\n </SidebarSeparator>\n );\n }\n\n if (item.type === 'folder') {\n return (\n <Folder key={i} item={item}>\n {renderSidebarList(item.children)}\n </Folder>\n );\n }\n\n if (Item) return <Item key={item.url} item={item} />;\n return (\n <SidebarItem key={item.url} href={item.url} external={item.external} icon={item.icon}>\n {item.name}\n </SidebarItem>\n );\n });\n }\n\n return <Fragment key={root.$id}>{renderSidebarList(root.children)}</Fragment>;\n }, [Folder, Item, Separator, root]);\n };\n}\n"],"mappings":";;;;;AAqBA,SAAgB,uBAAuB,EACrC,eACA,sBACA,mBACA,sBACA,kBACA,eACqB;CACrB,SAAS,eAAe,EAAE,MAAM,YAA4D;EAC1F,MAAM,sCAAoB;AAE1B,SACE,qBAAC;GACC,aAAa,KAAK;GAClB,QAAQ,KAAK,SAAS,KAAK;GAC3B,aAAa,KAAK;cAEjB,KAAK,QACJ,qBAAC;IAAkB,MAAM,KAAK,MAAM;IAAK,UAAU,KAAK,MAAM;eAC3D,KAAK,MACL,KAAK;KACY,GAEpB,qBAAC,mCACE,KAAK,MACL,KAAK,QACe,EAEzB,oBAAC,wBAAsB,WAAgC;IACzC;;;;;AAOpB,QAAO,SAAS,gBAAgB,YAAgD;EAC9E,MAAM,EAAE,2CAAyB;EACjC,MAAM,EAAE,WAAW,MAAM,SAAS,mBAAmB;AAErD,SAAO,cAAc;GACnB,SAAS,kBAAkB,OAAwB;AACjD,WAAO,MAAM,KAAK,MAAM,MAAM;AAC5B,SAAI,KAAK,SAAS,aAAa;AAC7B,UAAI,UAAW,QAAO,oBAAC,aAAwB,QAAT,EAAiB;AACvD,aACE,qBAAC,+BACE,KAAK,MACL,KAAK,SAFe,EAGJ;;AAIvB,SAAI,KAAK,SAAS,SAChB,QACE,oBAAC;MAAqB;gBACnB,kBAAkB,KAAK,SAAS;QADtB,EAEJ;AAIb,SAAI,KAAM,QAAO,oBAAC,QAA0B,QAAhB,KAAK,IAAmB;AACpD,YACE,oBAAC;MAA2B,MAAM,KAAK;MAAK,UAAU,KAAK;MAAU,MAAM,KAAK;gBAC7E,KAAK;QADU,KAAK,IAET;MAEhB;;AAGJ,UAAO,oBAACA,wBAAyB,kBAAkB,KAAK,SAAS,IAA3C,KAAK,IAAkD;KAC5E;GAAC;GAAQ;GAAM;GAAW;GAAK,CAAC"}
@@ -1,11 +1,20 @@
1
- import { type ComponentProps, type ReactNode } from 'react';
2
- import type { SidebarTab } from './index.js';
3
- export interface SidebarTabWithProps extends SidebarTab {
4
- props?: ComponentProps<'a'>;
1
+ import { SidebarTab } from "./index.js";
2
+ import * as react_jsx_runtime45 from "react/jsx-runtime";
3
+ import { ComponentProps, ReactNode } from "react";
4
+
5
+ //#region src/components/sidebar/tabs/dropdown.d.ts
6
+ interface SidebarTabWithProps extends SidebarTab {
7
+ props?: ComponentProps<'a'>;
5
8
  }
6
- export declare function SidebarTabsDropdown({ options, placeholder, ...props }: {
7
- placeholder?: ReactNode;
8
- options: SidebarTabWithProps[];
9
- } & ComponentProps<'button'>): import("react/jsx-runtime").JSX.Element;
10
- export declare function isTabActive(tab: SidebarTab, pathname: string): boolean;
9
+ declare function SidebarTabsDropdown({
10
+ options,
11
+ placeholder,
12
+ ...props
13
+ }: {
14
+ placeholder?: ReactNode;
15
+ options: SidebarTabWithProps[];
16
+ } & ComponentProps<'button'>): react_jsx_runtime45.JSX.Element;
17
+ declare function isTabActive(tab: SidebarTab, pathname: string): boolean;
18
+ //#endregion
19
+ export { SidebarTabWithProps, SidebarTabsDropdown, isTabActive };
11
20
  //# sourceMappingURL=dropdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAW/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AAEpC,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,KAAK,CAAC,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,WAAW,EACX,GAAG,KAAK,EACT,EAAE;IACD,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,GAAG,cAAc,CAAC,QAAQ,CAAC,2CAkF3B;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,WAI5D"}
1
+ {"version":3,"file":"dropdown.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"sourcesContent":[],"mappings":";;;;;UAWiB,mBAAA,SAA4B;UACnC;;AADO,iBAID,mBAAA,CAHN;EAAA,OAAA;EADmC,WAAU;EAAA,GAAA;AAMrD,CANqD,EAAA;EAIvC,WAAA,CAAA,EAKA,SALmB;EACjC,OAAA,EAKS,mBALT,EAAA;CACA,GAKE,cALF,CAAA,QAAA,CAAA,CAAA,EAK0B,mBAAA,CAAA,GAAA,CAAA,OAL1B;AAGc,iBAkFA,WAAA,CAlFA,GAAA,EAkFiB,UAlFjB,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA"}
@@ -1,34 +1,78 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { Check, ChevronsUpDown } from '@fumadocs/ui/icons';
4
- import { useMemo, useState } from 'react';
5
- import Link from 'fumadocs-core/link';
6
- import { usePathname } from 'fumadocs-core/framework';
7
- import { cn } from '@fumadocs/ui/cn';
8
- import { isActive, normalize } from '@fumadocs/ui/urls';
9
- import { useSidebar } from '../../../components/sidebar/base.js';
10
- import { Popover, PopoverContent, PopoverTrigger, } from '../../../components/ui/popover.js';
11
- export function SidebarTabsDropdown({ options, placeholder, ...props }) {
12
- const [open, setOpen] = useState(false);
13
- const { closeOnRedirect } = useSidebar();
14
- const pathname = usePathname();
15
- const selected = useMemo(() => {
16
- return options.findLast((item) => isTabActive(item, pathname));
17
- }, [options, pathname]);
18
- const onClick = () => {
19
- closeOnRedirect.current = false;
20
- setOpen(false);
21
- };
22
- const item = selected ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "size-9 shrink-0 empty:hidden md:size-5", children: selected.icon }), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-medium", children: selected.title }), _jsx("p", { className: "text-sm text-fd-muted-foreground empty:hidden md:hidden", children: selected.description })] })] })) : (placeholder);
23
- return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [item && (_jsxs(PopoverTrigger, { ...props, className: cn('flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-[state=open]:bg-fd-accent data-[state=open]:text-fd-accent-foreground', props.className), children: [item, _jsx(ChevronsUpDown, { className: "shrink-0 ms-auto size-4 text-fd-muted-foreground" })] })), _jsx(PopoverContent, { className: "flex flex-col gap-1 w-(--radix-popover-trigger-width) p-1 fd-scroll-container", children: options.map((item) => {
24
- const isActive = selected && item.url === selected.url;
25
- if (!isActive && item.unlisted)
26
- return;
27
- return (_jsxs(Link, { href: item.url, onClick: onClick, ...item.props, className: cn('flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground', item.props?.className), children: [_jsx("div", { className: "shrink-0 size-9 md:mb-auto md:size-5 empty:hidden", children: item.icon }), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-medium leading-none", children: item.title }), _jsx("p", { className: "text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden", children: item.description })] }), _jsx(Check, { className: cn('shrink-0 ms-auto size-3.5 text-fd-primary', !isActive && 'invisible') })] }, item.url));
28
- }) })] }));
2
+
3
+ import { useSidebar } from "../base.js";
4
+ import { Popover, PopoverContent, PopoverTrigger } from "../../ui/popover.js";
5
+ import Link from "fumadocs-core/link";
6
+ import { usePathname } from "fumadocs-core/framework";
7
+ import { cn } from "@fumadocs/ui/cn";
8
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
+ import { Check, ChevronsUpDown } from "lucide-react";
10
+ import { useMemo, useState } from "react";
11
+ import { isActive, normalize } from "@fumadocs/ui/urls";
12
+
13
+ //#region src/components/sidebar/tabs/dropdown.tsx
14
+ function SidebarTabsDropdown({ options, placeholder, ...props }) {
15
+ const [open, setOpen] = useState(false);
16
+ const { closeOnRedirect } = useSidebar();
17
+ const pathname = usePathname();
18
+ const selected = useMemo(() => {
19
+ return options.findLast((item$1) => isTabActive(item$1, pathname));
20
+ }, [options, pathname]);
21
+ const onClick = () => {
22
+ closeOnRedirect.current = false;
23
+ setOpen(false);
24
+ };
25
+ const item = selected ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
26
+ className: "size-9 shrink-0 empty:hidden md:size-5",
27
+ children: selected.icon
28
+ }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
29
+ className: "text-sm font-medium",
30
+ children: selected.title
31
+ }), /* @__PURE__ */ jsx("p", {
32
+ className: "text-sm text-fd-muted-foreground empty:hidden md:hidden",
33
+ children: selected.description
34
+ })] })] }) : placeholder;
35
+ return /* @__PURE__ */ jsxs(Popover, {
36
+ open,
37
+ onOpenChange: setOpen,
38
+ children: [item && /* @__PURE__ */ jsxs(PopoverTrigger, {
39
+ ...props,
40
+ className: cn("flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-[state=open]:bg-fd-accent data-[state=open]:text-fd-accent-foreground", props.className),
41
+ children: [item, /* @__PURE__ */ jsx(ChevronsUpDown, { className: "shrink-0 ms-auto size-4 text-fd-muted-foreground" })]
42
+ }), /* @__PURE__ */ jsx(PopoverContent, {
43
+ className: "flex flex-col gap-1 w-(--radix-popover-trigger-width) p-1 fd-scroll-container",
44
+ children: options.map((item$1) => {
45
+ const isActive$1 = selected && item$1.url === selected.url;
46
+ if (!isActive$1 && item$1.unlisted) return;
47
+ return /* @__PURE__ */ jsxs(Link, {
48
+ href: item$1.url,
49
+ onClick,
50
+ ...item$1.props,
51
+ className: cn("flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground", item$1.props?.className),
52
+ children: [
53
+ /* @__PURE__ */ jsx("div", {
54
+ className: "shrink-0 size-9 md:mb-auto md:size-5 empty:hidden",
55
+ children: item$1.icon
56
+ }),
57
+ /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("p", {
58
+ className: "text-sm font-medium leading-none",
59
+ children: item$1.title
60
+ }), /* @__PURE__ */ jsx("p", {
61
+ className: "text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden",
62
+ children: item$1.description
63
+ })] }),
64
+ /* @__PURE__ */ jsx(Check, { className: cn("shrink-0 ms-auto size-3.5 text-fd-primary", !isActive$1 && "invisible") })
65
+ ]
66
+ }, item$1.url);
67
+ })
68
+ })]
69
+ });
29
70
  }
30
- export function isTabActive(tab, pathname) {
31
- if (tab.urls)
32
- return tab.urls.has(normalize(pathname));
33
- return isActive(tab.url, pathname, true);
71
+ function isTabActive(tab, pathname) {
72
+ if (tab.urls) return tab.urls.has(normalize(pathname));
73
+ return isActive(tab.url, pathname, true);
34
74
  }
75
+
76
+ //#endregion
77
+ export { SidebarTabsDropdown, isTabActive };
78
+ //# sourceMappingURL=dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.js","names":["item","isActive"],"sources":["../../../../src/components/sidebar/tabs/dropdown.tsx"],"sourcesContent":["'use client';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { type ComponentProps, type ReactNode, useMemo, useState } from 'react';\nimport Link from 'fumadocs-core/link';\nimport { usePathname } from 'fumadocs-core/framework';\nimport { cn } from '@fumadocs/ui/cn';\nimport { isActive, normalize } from '@fumadocs/ui/urls';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover';\nimport type { SidebarTab } from '.';\n\nexport interface SidebarTabWithProps extends SidebarTab {\n props?: ComponentProps<'a'>;\n}\n\nexport function SidebarTabsDropdown({\n options,\n placeholder,\n ...props\n}: {\n placeholder?: ReactNode;\n options: SidebarTabWithProps[];\n} & ComponentProps<'button'>) {\n const [open, setOpen] = useState(false);\n const { closeOnRedirect } = useSidebar();\n const pathname = usePathname();\n\n const selected = useMemo(() => {\n return options.findLast((item) => isTabActive(item, pathname));\n }, [options, pathname]);\n\n const onClick = () => {\n closeOnRedirect.current = false;\n setOpen(false);\n };\n\n const item = selected ? (\n <>\n <div className=\"size-9 shrink-0 empty:hidden md:size-5\">{selected.icon}</div>\n <div>\n <p className=\"text-sm font-medium\">{selected.title}</p>\n <p className=\"text-sm text-fd-muted-foreground empty:hidden md:hidden\">\n {selected.description}\n </p>\n </div>\n </>\n ) : (\n placeholder\n );\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n {item && (\n <PopoverTrigger\n {...props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-2 border bg-fd-secondary/50 text-start text-fd-secondary-foreground transition-colors hover:bg-fd-accent data-[state=open]:bg-fd-accent data-[state=open]:text-fd-accent-foreground',\n props.className,\n )}\n >\n {item}\n <ChevronsUpDown className=\"shrink-0 ms-auto size-4 text-fd-muted-foreground\" />\n </PopoverTrigger>\n )}\n <PopoverContent className=\"flex flex-col gap-1 w-(--radix-popover-trigger-width) p-1 fd-scroll-container\">\n {options.map((item) => {\n const isActive = selected && item.url === selected.url;\n if (!isActive && item.unlisted) return;\n\n return (\n <Link\n key={item.url}\n href={item.url}\n onClick={onClick}\n {...item.props}\n className={cn(\n 'flex items-center gap-2 rounded-lg p-1.5 hover:bg-fd-accent hover:text-fd-accent-foreground',\n item.props?.className,\n )}\n >\n <div className=\"shrink-0 size-9 md:mb-auto md:size-5 empty:hidden\">{item.icon}</div>\n <div>\n <p className=\"text-sm font-medium leading-none\">{item.title}</p>\n <p className=\"text-[0.8125rem] text-fd-muted-foreground mt-1 empty:hidden\">\n {item.description}\n </p>\n </div>\n\n <Check\n className={cn(\n 'shrink-0 ms-auto size-3.5 text-fd-primary',\n !isActive && 'invisible',\n )}\n />\n </Link>\n );\n })}\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function isTabActive(tab: SidebarTab, pathname: string) {\n if (tab.urls) return tab.urls.has(normalize(pathname));\n\n return isActive(tab.url, pathname, true);\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,SAAgB,oBAAoB,EAClC,SACA,aACA,GAAG,SAIyB;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,EAAE,oBAAoB,YAAY;CACxC,MAAM,WAAW,aAAa;CAE9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,WAAS,YAAYA,QAAM,SAAS,CAAC;IAC7D,CAAC,SAAS,SAAS,CAAC;CAEvB,MAAM,gBAAgB;AACpB,kBAAgB,UAAU;AAC1B,UAAQ,MAAM;;CAGhB,MAAM,OAAO,WACX,4CACE,oBAAC;EAAI,WAAU;YAA0C,SAAS;GAAW,EAC7E,qBAAC,oBACC,oBAAC;EAAE,WAAU;YAAuB,SAAS;GAAU,EACvD,oBAAC;EAAE,WAAU;YACV,SAAS;GACR,IACA,IACL,GAEH;AAGF,QACE,qBAAC;EAAc;EAAM,cAAc;aAChC,QACC,qBAAC;GACC,GAAI;GACJ,WAAW,GACT,4NACA,MAAM,UACP;cAEA,MACD,oBAAC,kBAAe,WAAU,qDAAqD;IAChE,EAEnB,oBAAC;GAAe,WAAU;aACvB,QAAQ,KAAK,WAAS;IACrB,MAAMC,aAAW,YAAYD,OAAK,QAAQ,SAAS;AACnD,QAAI,CAACC,cAAYD,OAAK,SAAU;AAEhC,WACE,qBAAC;KAEC,MAAMA,OAAK;KACF;KACT,GAAIA,OAAK;KACT,WAAW,GACT,+FACAA,OAAK,OAAO,UACb;;MAED,oBAAC;OAAI,WAAU;iBAAqDA,OAAK;QAAW;MACpF,qBAAC,oBACC,oBAAC;OAAE,WAAU;iBAAoCA,OAAK;QAAU,EAChE,oBAAC;OAAE,WAAU;iBACVA,OAAK;QACJ,IACA;MAEN,oBAAC,SACC,WAAW,GACT,6CACA,CAACC,cAAY,YACd,GACD;;OAtBGD,OAAK,IAuBL;KAET;IACa;GACT;;AAId,SAAgB,YAAY,KAAiB,UAAkB;AAC7D,KAAI,IAAI,KAAM,QAAO,IAAI,KAAK,IAAI,UAAU,SAAS,CAAC;AAEtD,QAAO,SAAS,IAAI,KAAK,UAAU,KAAK"}
@@ -1,21 +1,27 @@
1
- import type * as PageTree from 'fumadocs-core/page-tree';
2
- import type { ReactNode } from 'react';
3
- export interface SidebarTab {
4
- /**
5
- * Redirect URL of the folder, usually the index page
6
- */
7
- url: string;
8
- icon?: ReactNode;
9
- title: ReactNode;
10
- description?: ReactNode;
11
- /**
12
- * Detect from a list of urls
13
- */
14
- urls?: Set<string>;
15
- unlisted?: boolean;
1
+ import { ReactNode } from "react";
2
+ import * as PageTree from "fumadocs-core/page-tree";
3
+
4
+ //#region src/components/sidebar/tabs/index.d.ts
5
+ interface SidebarTab {
6
+ /**
7
+ * Redirect URL of the folder, usually the index page
8
+ */
9
+ url: string;
10
+ icon?: ReactNode;
11
+ title: ReactNode;
12
+ description?: ReactNode;
13
+ /**
14
+ * Detect from a list of urls
15
+ */
16
+ urls?: Set<string>;
17
+ unlisted?: boolean;
16
18
  }
17
- export interface GetSidebarTabsOptions {
18
- transform?: (option: SidebarTab, node: PageTree.Folder) => SidebarTab | null;
19
+ interface GetSidebarTabsOptions {
20
+ transform?: (option: SidebarTab, node: PageTree.Folder) => SidebarTab | null;
19
21
  }
20
- export declare function getSidebarTabs(tree: PageTree.Root, { transform }?: GetSidebarTabsOptions): SidebarTab[];
22
+ declare function getSidebarTabs(tree: PageTree.Root, {
23
+ transform
24
+ }?: GetSidebarTabsOptions): SidebarTab[];
25
+ //#endregion
26
+ export { GetSidebarTabsOptions, SidebarTab, getSidebarTabs };
21
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/sidebar/tabs/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;OAEG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,KAAK,UAAU,GAAG,IAAI,CAAC;CAC9E;AAeD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,EAAE,SAA4B,EAAE,GAAE,qBAA0B,GAC3D,UAAU,EAAE,CAkCd"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"sourcesContent":[],"mappings":";;;;UAGiB,UAAA;;AAAjB;;EAOS,GAAA,EAAA,MAAA;EACO,IAAA,CAAA,EAFP,SAEO;EAKP,KAAA,EANA,SAMA;EAAG,WAAA,CAAA,EALI,SAKJ;EAIK;;;EAC4C,IAAA,CAAA,EALpD,GAKoD,CAAA,MAAA,CAAA;EAAU,QAAA,CAAA,EAAA,OAAA;AAgBvE;AACQ,UAlBS,qBAAA,CAkBA;EACb,SAAA,CAAA,EAAA,CAAA,MAAA,EAlBmB,UAkBnB,EAAA,IAAA,EAlBqC,QAAA,CAAS,MAkB9C,EAAA,GAlByD,UAkBzD,GAAA,IAAA;;AACD,iBAHa,cAAA,CAGb,IAAA,EAFK,QAAA,CAAS,IAEd,EAAA;EAAA;AAAA,CAAA,CAAA,EADiC,qBACjC,CAAA,EAAA,UAAA,EAAA"}
@@ -1,49 +1,49 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx } from "react/jsx-runtime";
2
+
3
+ //#region src/components/sidebar/tabs/index.tsx
2
4
  const defaultTransform = (option, node) => {
3
- if (!node.icon)
4
- return option;
5
- return {
6
- ...option,
7
- icon: (_jsx("div", { className: "size-full [&_svg]:size-full max-md:p-1.5 max-md:rounded-md max-md:border max-md:bg-fd-secondary", children: node.icon })),
8
- };
5
+ if (!node.icon) return option;
6
+ return {
7
+ ...option,
8
+ icon: /* @__PURE__ */ jsx("div", {
9
+ className: "size-full [&_svg]:size-full max-md:p-1.5 max-md:rounded-md max-md:border max-md:bg-fd-secondary",
10
+ children: node.icon
11
+ })
12
+ };
9
13
  };
10
- export function getSidebarTabs(tree, { transform = defaultTransform } = {}) {
11
- const results = [];
12
- function scanOptions(node, unlisted) {
13
- if ('root' in node && node.root) {
14
- const urls = getFolderUrls(node);
15
- if (urls.size > 0) {
16
- const option = {
17
- url: urls.values().next().value ?? '',
18
- title: node.name,
19
- icon: node.icon,
20
- unlisted,
21
- description: node.description,
22
- urls,
23
- };
24
- const mapped = transform ? transform(option, node) : option;
25
- if (mapped)
26
- results.push(mapped);
27
- }
28
- }
29
- for (const child of node.children) {
30
- if (child.type === 'folder')
31
- scanOptions(child, unlisted);
32
- }
33
- }
34
- scanOptions(tree);
35
- if (tree.fallback)
36
- scanOptions(tree.fallback, true);
37
- return results;
14
+ function getSidebarTabs(tree, { transform = defaultTransform } = {}) {
15
+ const results = [];
16
+ function scanOptions(node, unlisted) {
17
+ if ("root" in node && node.root) {
18
+ const urls = getFolderUrls(node);
19
+ if (urls.size > 0) {
20
+ const option = {
21
+ url: urls.values().next().value ?? "",
22
+ title: node.name,
23
+ icon: node.icon,
24
+ unlisted,
25
+ description: node.description,
26
+ urls
27
+ };
28
+ const mapped = transform ? transform(option, node) : option;
29
+ if (mapped) results.push(mapped);
30
+ }
31
+ }
32
+ for (const child of node.children) if (child.type === "folder") scanOptions(child, unlisted);
33
+ }
34
+ scanOptions(tree);
35
+ if (tree.fallback) scanOptions(tree.fallback, true);
36
+ return results;
38
37
  }
39
- function getFolderUrls(folder, output = new Set()) {
40
- if (folder.index)
41
- output.add(folder.index.url);
42
- for (const child of folder.children) {
43
- if (child.type === 'page' && !child.external)
44
- output.add(child.url);
45
- if (child.type === 'folder')
46
- getFolderUrls(child, output);
47
- }
48
- return output;
38
+ function getFolderUrls(folder, output = /* @__PURE__ */ new Set()) {
39
+ if (folder.index) output.add(folder.index.url);
40
+ for (const child of folder.children) {
41
+ if (child.type === "page" && !child.external) output.add(child.url);
42
+ if (child.type === "folder") getFolderUrls(child, output);
43
+ }
44
+ return output;
49
45
  }
46
+
47
+ //#endregion
48
+ export { getSidebarTabs };
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["defaultTransform: GetSidebarTabsOptions['transform']","results: SidebarTab[]","option: SidebarTab"],"sources":["../../../../src/components/sidebar/tabs/index.tsx"],"sourcesContent":["import type * as PageTree from 'fumadocs-core/page-tree';\nimport type { ReactNode } from 'react';\n\nexport interface SidebarTab {\n /**\n * Redirect URL of the folder, usually the index page\n */\n url: string;\n\n icon?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n\n /**\n * Detect from a list of urls\n */\n urls?: Set<string>;\n unlisted?: boolean;\n}\n\nexport interface GetSidebarTabsOptions {\n transform?: (option: SidebarTab, node: PageTree.Folder) => SidebarTab | null;\n}\n\nconst defaultTransform: GetSidebarTabsOptions['transform'] = (option, node) => {\n if (!node.icon) return option;\n\n return {\n ...option,\n icon: (\n <div className=\"size-full [&_svg]:size-full max-md:p-1.5 max-md:rounded-md max-md:border max-md:bg-fd-secondary\">\n {node.icon}\n </div>\n ),\n };\n};\n\nexport function getSidebarTabs(\n tree: PageTree.Root,\n { transform = defaultTransform }: GetSidebarTabsOptions = {},\n): SidebarTab[] {\n const results: SidebarTab[] = [];\n\n function scanOptions(node: PageTree.Root | PageTree.Folder, unlisted?: boolean) {\n if ('root' in node && node.root) {\n const urls = getFolderUrls(node);\n\n if (urls.size > 0) {\n const option: SidebarTab = {\n url: urls.values().next().value ?? '',\n title: node.name,\n icon: node.icon,\n unlisted,\n description: node.description,\n urls,\n };\n\n const mapped = transform ? transform(option, node) : option;\n if (mapped) results.push(mapped);\n }\n }\n\n for (const child of node.children) {\n if (child.type === 'folder') scanOptions(child, unlisted);\n }\n }\n\n scanOptions(tree);\n if (tree.fallback) scanOptions(tree.fallback, true);\n\n return results;\n}\n\nfunction getFolderUrls(folder: PageTree.Folder, output: Set<string> = new Set()): Set<string> {\n if (folder.index) output.add(folder.index.url);\n\n for (const child of folder.children) {\n if (child.type === 'page' && !child.external) output.add(child.url);\n if (child.type === 'folder') getFolderUrls(child, output);\n }\n\n return output;\n}\n"],"mappings":";;;AAwBA,MAAMA,oBAAwD,QAAQ,SAAS;AAC7E,KAAI,CAAC,KAAK,KAAM,QAAO;AAEvB,QAAO;EACL,GAAG;EACH,MACE,oBAAC;GAAI,WAAU;aACZ,KAAK;IACF;EAET;;AAGH,SAAgB,eACd,MACA,EAAE,YAAY,qBAA4C,EAAE,EAC9C;CACd,MAAMC,UAAwB,EAAE;CAEhC,SAAS,YAAY,MAAuC,UAAoB;AAC9E,MAAI,UAAU,QAAQ,KAAK,MAAM;GAC/B,MAAM,OAAO,cAAc,KAAK;AAEhC,OAAI,KAAK,OAAO,GAAG;IACjB,MAAMC,SAAqB;KACzB,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,SAAS;KACnC,OAAO,KAAK;KACZ,MAAM,KAAK;KACX;KACA,aAAa,KAAK;KAClB;KACD;IAED,MAAM,SAAS,YAAY,UAAU,QAAQ,KAAK,GAAG;AACrD,QAAI,OAAQ,SAAQ,KAAK,OAAO;;;AAIpC,OAAK,MAAM,SAAS,KAAK,SACvB,KAAI,MAAM,SAAS,SAAU,aAAY,OAAO,SAAS;;AAI7D,aAAY,KAAK;AACjB,KAAI,KAAK,SAAU,aAAY,KAAK,UAAU,KAAK;AAEnD,QAAO;;AAGT,SAAS,cAAc,QAAyB,yBAAsB,IAAI,KAAK,EAAe;AAC5F,KAAI,OAAO,MAAO,QAAO,IAAI,OAAO,MAAM,IAAI;AAE9C,MAAK,MAAM,SAAS,OAAO,UAAU;AACnC,MAAI,MAAM,SAAS,UAAU,CAAC,MAAM,SAAU,QAAO,IAAI,MAAM,IAAI;AACnE,MAAI,MAAM,SAAS,SAAU,eAAc,OAAO,OAAO;;AAG3D,QAAO"}
@@ -1,8 +1,17 @@
1
- import type { ReactNode } from 'react';
2
- export declare function Steps({ children }: {
3
- children: ReactNode;
4
- }): import("react/jsx-runtime").JSX.Element;
5
- export declare function Step({ children }: {
6
- children: ReactNode;
7
- }): import("react/jsx-runtime").JSX.Element;
1
+ import * as react_jsx_runtime13 from "react/jsx-runtime";
2
+ import { ReactNode } from "react";
3
+
4
+ //#region src/components/steps.d.ts
5
+ declare function Steps({
6
+ children
7
+ }: {
8
+ children: ReactNode;
9
+ }): react_jsx_runtime13.JSX.Element;
10
+ declare function Step({
11
+ children
12
+ }: {
13
+ children: ReactNode;
14
+ }): react_jsx_runtime13.JSX.Element;
15
+ //#endregion
16
+ export { Step, Steps };
8
17
  //# sourceMappingURL=steps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/components/steps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAE1D;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAEzD"}
1
+ {"version":3,"file":"steps.d.ts","names":[],"sources":["../../src/components/steps.tsx"],"sourcesContent":[],"mappings":";;;;iBAEgB,KAAA;;;YAAgC;IAAW,mBAAA,CAAA,GAAA,CAAA;AAA3C,iBAIA,IAAA,CAJK;EAAA;CAAA,EAAA;EAAG,QAAA,EAIuB,SAJvB;CAAwB,CAAA,EAIU,mBAAA,CAAA,GAAA,CAAA,OAJV"}
@@ -1,7 +1,19 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- export function Steps({ children }) {
3
- return _jsx("div", { className: "fd-steps", children: children });
1
+ import { jsx } from "react/jsx-runtime";
2
+
3
+ //#region src/components/steps.tsx
4
+ function Steps({ children }) {
5
+ return /* @__PURE__ */ jsx("div", {
6
+ className: "fd-steps",
7
+ children
8
+ });
4
9
  }
5
- export function Step({ children }) {
6
- return _jsx("div", { className: "fd-step", children: children });
10
+ function Step({ children }) {
11
+ return /* @__PURE__ */ jsx("div", {
12
+ className: "fd-step",
13
+ children
14
+ });
7
15
  }
16
+
17
+ //#endregion
18
+ export { Step, Steps };
19
+ //# sourceMappingURL=steps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steps.js","names":[],"sources":["../../src/components/steps.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nexport function Steps({ children }: { children: ReactNode }) {\n return <div className=\"fd-steps\">{children}</div>;\n}\n\nexport function Step({ children }: { children: ReactNode }) {\n return <div className=\"fd-step\">{children}</div>;\n}\n"],"mappings":";;;AAEA,SAAgB,MAAM,EAAE,YAAqC;AAC3D,QAAO,oBAAC;EAAI,WAAU;EAAY;GAAe;;AAGnD,SAAgB,KAAK,EAAE,YAAqC;AAC1D,QAAO,oBAAC;EAAI,WAAU;EAAW;GAAe"}
@@ -1,31 +1,52 @@
1
- import * as React from 'react';
2
- import { type ComponentProps, type ReactNode } from 'react';
3
- import * as Unstyled from './ui/tabs.js';
4
- export interface TabsProps extends Omit<ComponentProps<typeof Unstyled.Tabs>, 'value' | 'onValueChange'> {
5
- /**
6
- * Use simple mode instead of advanced usage as documented in https://radix-ui.com/primitives/docs/components/tabs.
7
- */
8
- items?: string[];
9
- /**
10
- * Shortcut for `defaultValue` when `items` is provided.
11
- *
12
- * @defaultValue 0
13
- */
14
- defaultIndex?: number;
15
- /**
16
- * Additional label in tabs list when `items` is provided.
17
- */
18
- label?: ReactNode;
1
+ import { Tabs as Tabs$1, TabsContent as TabsContent$1 } from "./ui/tabs.js";
2
+ import * as react_jsx_runtime17 from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { ComponentProps, ReactNode } from "react";
5
+ import * as _radix_ui_react_tabs0 from "@radix-ui/react-tabs";
6
+
7
+ //#region src/components/tabs.d.ts
8
+ interface TabsProps extends Omit<ComponentProps<typeof Tabs$1>, 'value' | 'onValueChange'> {
9
+ /**
10
+ * Use simple mode instead of advanced usage as documented in https://radix-ui.com/primitives/docs/components/tabs.
11
+ */
12
+ items?: string[];
13
+ /**
14
+ * Shortcut for `defaultValue` when `items` is provided.
15
+ *
16
+ * @defaultValue 0
17
+ */
18
+ defaultIndex?: number;
19
+ /**
20
+ * Additional label in tabs list when `items` is provided.
21
+ */
22
+ label?: ReactNode;
19
23
  }
20
- export declare const TabsList: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-tabs").TabsListProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
21
- export declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<import("@radix-ui/react-tabs").TabsTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
22
- export declare function Tabs({ ref, className, items, label, defaultIndex, defaultValue, ...props }: TabsProps): import("react/jsx-runtime").JSX.Element;
23
- export interface TabProps extends Omit<ComponentProps<typeof Unstyled.TabsContent>, 'value'> {
24
- /**
25
- * Value of tab, detect from index if unspecified.
26
- */
27
- value?: string;
24
+ declare const TabsList: React.ForwardRefExoticComponent<Omit<_radix_ui_react_tabs0.TabsListProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
25
+ declare const TabsTrigger: React.ForwardRefExoticComponent<Omit<_radix_ui_react_tabs0.TabsTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
26
+ declare function Tabs({
27
+ ref,
28
+ className,
29
+ items,
30
+ label,
31
+ defaultIndex,
32
+ defaultValue,
33
+ ...props
34
+ }: TabsProps): react_jsx_runtime17.JSX.Element;
35
+ interface TabProps extends Omit<ComponentProps<typeof TabsContent$1>, 'value'> {
36
+ /**
37
+ * Value of tab, detect from index if unspecified.
38
+ */
39
+ value?: string;
28
40
  }
29
- export declare function Tab({ value, ...props }: TabProps): import("react/jsx-runtime").JSX.Element;
30
- export declare function TabsContent({ value, className, ...props }: ComponentProps<typeof Unstyled.TabsContent>): import("react/jsx-runtime").JSX.Element;
41
+ declare function Tab({
42
+ value,
43
+ ...props
44
+ }: TabProps): react_jsx_runtime17.JSX.Element;
45
+ declare function TabsContent({
46
+ value,
47
+ className,
48
+ ...props
49
+ }: ComponentProps<typeof TabsContent$1>): react_jsx_runtime17.JSX.Element;
50
+ //#endregion
51
+ export { Tab, TabProps, Tabs, TabsContent, TabsList, TabsProps, TabsTrigger };
31
52
  //# sourceMappingURL=tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/components/tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,QAAQ,MAAM,WAAW,CAAC;AAItC,MAAM,WAAW,SAAU,SAAQ,IAAI,CACrC,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,EACpC,OAAO,GAAG,eAAe,CAC1B;IACC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAaD,eAAO,MAAM,QAAQ,wKAYnB,CAAC;AAGH,eAAO,MAAM,WAAW,iLAYtB,CAAC;AAGH,wBAAgB,IAAI,CAAC,EACnB,GAAG,EACH,SAAS,EACT,KAAK,EACL,KAAK,EACL,YAAgB,EAChB,YAAmE,EACnE,GAAG,KAAK,EACT,EAAE,SAAS,2CAqCX;AAED,MAAM,WAAW,QAAS,SAAQ,IAAI,CACpC,cAAc,CAAC,OAAO,QAAQ,CAAC,WAAW,CAAC,EAC3C,OAAO,CACR;IACC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,QAAQ,2CAgBhD;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,OAAO,QAAQ,CAAC,WAAW,CAAC,2CAc7C"}
1
+ {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/components/tabs.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAkBiB,SAAA,SAAkB,KACjC,sBAAsB;;;;EADP,KAAA,CAAA,EAAA,MAAU,EAAA;EACH;;;;;EAgCX,YAYX,CAAA,EAAA,MAAA;EAAA;;;EAZmB,KAAA,CAAA,EAdX,SAcW;;AAAA,cAAR,QAAQ,EAAA,KAAA,CAAA,yBAAA,CAAA,IAAA,CAYnB,qBAAA,CAZmB,aAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,KAAA,CAAA,GAAA,KAAA,CAAA,aAAA,CAAA,cAAA,CAAA,CAAA;AAAA,cAeR,WAfQ,EAeG,KAAA,CAAA,yBAfH,CAeG,IAfH,CA2BnB,qBAAA,CAZsB,gBAAA,GAAA,KAAA,CAAA,aAfH,CAeG,iBAfH,CAAA,EAAA,KAAA,CAAA,GAeG,KAAA,CAAA,aAfH,CAeG,iBAfH,CAAA,CAAA;AAAA,iBA8BL,IAAA,CA9BK;EAAA,GAAA;EAAA,SAAA;EAAA,KAAA;EAAA,KAAA;EAAA,YAAA;EAAA,YAAA;EAAA,GAAA;AAAA,CAAA,EAsClB,SAtCkB,CAAA,EAsCT,mBAAA,CAAA,GAAA,CAAA,OAtCS;AAeR,UA0DI,QAAA,SAAiB,IA9ChC,CA8CqC,cA9CrC,CAAA,OA8C2D,aA9C3D,CAAA,EAAA,OAAA,CAAA,CAAA;EAAA;;;EAZsB,KAAA,CAAA,EAAA,MAAA;;AAAA,iBAiER,GAAA,CAjEQ;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EAiEiB,QAjEjB,CAAA,EAiEyB,mBAAA,CAAA,GAAA,CAAA,OAjEzB;AAAA,iBAmFR,WAAA,CAnFQ;EAAA,KAAA;EAAA,SAAA;EAAA,GAAA;AAAA,CAAA,EAuFrB,cAvFqB,CAAA,OAuFC,aAvFD,CAAA,CAAA,EAuFsB,mBAAA,CAAA,GAAA,CAAA,OAvFtB"}