fumadocs-ui 16.4.0 → 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 -16
  196. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  197. package/dist/layouts/notebook/sidebar.js +135 -79
  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 +30 -12
  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,79 +1,81 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { createContext, use, useEffectEvent, useLayoutEffect, useMemo, useRef, useState, } from 'react';
4
- import * as Primitive from '@radix-ui/react-tabs';
5
- import { mergeRefs } from '@fumadocs/ui/merge-refs';
6
- const listeners = new Map();
2
+
3
+ import { jsx } from "react/jsx-runtime";
4
+ import { createContext, use, useEffectEvent, useLayoutEffect, useMemo, useRef, useState } from "react";
5
+ import * as Primitive from "@radix-ui/react-tabs";
6
+ import { mergeRefs } from "@fumadocs/ui/merge-refs";
7
+
8
+ //#region src/components/ui/tabs.tsx
9
+ const listeners = /* @__PURE__ */ new Map();
7
10
  const TabsContext = createContext(null);
8
11
  function useTabContext() {
9
- const ctx = use(TabsContext);
10
- if (!ctx)
11
- throw new Error('You must wrap your component in <Tabs>');
12
- return ctx;
12
+ const ctx = use(TabsContext);
13
+ if (!ctx) throw new Error("You must wrap your component in <Tabs>");
14
+ return ctx;
13
15
  }
14
- export const TabsList = Primitive.TabsList;
15
- export const TabsTrigger = Primitive.TabsTrigger;
16
- export function Tabs({ ref, groupId, persist = false, updateAnchor = false, defaultValue, value: _value, onValueChange: _onValueChange, ...props }) {
17
- const tabsRef = useRef(null);
18
- const valueToIdMap = useMemo(() => new Map(), []);
19
- const [value, setValue] = _value === undefined
20
- ? // eslint-disable-next-line react-hooks/rules-of-hooks -- not supposed to change controlled/uncontrolled
21
- useState(defaultValue)
22
- : // eslint-disable-next-line react-hooks/rules-of-hooks -- not supposed to change controlled/uncontrolled
23
- [_value, useEffectEvent((v) => _onValueChange?.(v))];
24
- useLayoutEffect(() => {
25
- if (!groupId)
26
- return;
27
- let previous = sessionStorage.getItem(groupId);
28
- if (persist)
29
- previous ?? (previous = localStorage.getItem(groupId));
30
- if (previous)
31
- setValue(previous);
32
- const groupListeners = listeners.get(groupId) ?? new Set();
33
- groupListeners.add(setValue);
34
- listeners.set(groupId, groupListeners);
35
- return () => {
36
- groupListeners.delete(setValue);
37
- };
38
- }, [groupId, persist, setValue]);
39
- useLayoutEffect(() => {
40
- const hash = window.location.hash.slice(1);
41
- if (!hash)
42
- return;
43
- for (const [value, id] of valueToIdMap.entries()) {
44
- if (id === hash) {
45
- setValue(value);
46
- tabsRef.current?.scrollIntoView();
47
- break;
48
- }
49
- }
50
- }, [setValue, valueToIdMap]);
51
- return (_jsx(Primitive.Tabs, { ref: mergeRefs(ref, tabsRef), value: value, onValueChange: (v) => {
52
- if (updateAnchor) {
53
- const id = valueToIdMap.get(v);
54
- if (id) {
55
- window.history.replaceState(null, '', `#${id}`);
56
- }
57
- }
58
- if (groupId) {
59
- const groupListeners = listeners.get(groupId);
60
- if (groupListeners) {
61
- for (const listener of groupListeners)
62
- listener(v);
63
- }
64
- sessionStorage.setItem(groupId, v);
65
- if (persist)
66
- localStorage.setItem(groupId, v);
67
- }
68
- else {
69
- setValue(v);
70
- }
71
- }, ...props, children: _jsx(TabsContext, { value: useMemo(() => ({ valueToIdMap }), [valueToIdMap]), children: props.children }) }));
16
+ const TabsList = Primitive.TabsList;
17
+ const TabsTrigger = Primitive.TabsTrigger;
18
+ function Tabs({ ref, groupId, persist = false, updateAnchor = false, defaultValue, value: _value, onValueChange: _onValueChange, ...props }) {
19
+ const tabsRef = useRef(null);
20
+ const valueToIdMap = useMemo(() => /* @__PURE__ */ new Map(), []);
21
+ const [value, setValue] = _value === void 0 ? useState(defaultValue) : [_value, useEffectEvent((v) => _onValueChange?.(v))];
22
+ useLayoutEffect(() => {
23
+ if (!groupId) return;
24
+ let previous = sessionStorage.getItem(groupId);
25
+ if (persist) previous ??= localStorage.getItem(groupId);
26
+ if (previous) setValue(previous);
27
+ const groupListeners = listeners.get(groupId) ?? /* @__PURE__ */ new Set();
28
+ groupListeners.add(setValue);
29
+ listeners.set(groupId, groupListeners);
30
+ return () => {
31
+ groupListeners.delete(setValue);
32
+ };
33
+ }, [
34
+ groupId,
35
+ persist,
36
+ setValue
37
+ ]);
38
+ useLayoutEffect(() => {
39
+ const hash = window.location.hash.slice(1);
40
+ if (!hash) return;
41
+ for (const [value$1, id] of valueToIdMap.entries()) if (id === hash) {
42
+ setValue(value$1);
43
+ tabsRef.current?.scrollIntoView();
44
+ break;
45
+ }
46
+ }, [setValue, valueToIdMap]);
47
+ return /* @__PURE__ */ jsx(Primitive.Tabs, {
48
+ ref: mergeRefs(ref, tabsRef),
49
+ value,
50
+ onValueChange: (v) => {
51
+ if (updateAnchor) {
52
+ const id = valueToIdMap.get(v);
53
+ if (id) window.history.replaceState(null, "", `#${id}`);
54
+ }
55
+ if (groupId) {
56
+ const groupListeners = listeners.get(groupId);
57
+ if (groupListeners) for (const listener of groupListeners) listener(v);
58
+ sessionStorage.setItem(groupId, v);
59
+ if (persist) localStorage.setItem(groupId, v);
60
+ } else setValue(v);
61
+ },
62
+ ...props,
63
+ children: /* @__PURE__ */ jsx(TabsContext, {
64
+ value: useMemo(() => ({ valueToIdMap }), [valueToIdMap]),
65
+ children: props.children
66
+ })
67
+ });
72
68
  }
73
- export function TabsContent({ value, ...props }) {
74
- const { valueToIdMap } = useTabContext();
75
- if (props.id) {
76
- valueToIdMap.set(value, props.id);
77
- }
78
- return (_jsx(Primitive.TabsContent, { value: value, ...props, children: props.children }));
69
+ function TabsContent({ value, ...props }) {
70
+ const { valueToIdMap } = useTabContext();
71
+ if (props.id) valueToIdMap.set(value, props.id);
72
+ return /* @__PURE__ */ jsx(Primitive.TabsContent, {
73
+ value,
74
+ ...props,
75
+ children: props.children
76
+ });
79
77
  }
78
+
79
+ //#endregion
80
+ export { Tabs, TabsContent, TabsList, TabsTrigger };
81
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","names":["value"],"sources":["../../../src/components/ui/tabs.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ComponentProps,\n createContext,\n use,\n useEffectEvent,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport * as Primitive from '@radix-ui/react-tabs';\nimport { mergeRefs } from '@fumadocs/ui/merge-refs';\n\ntype ChangeListener = (v: string) => void;\nconst listeners = new Map<string, Set<ChangeListener>>();\n\nexport interface TabsProps extends ComponentProps<typeof Primitive.Tabs> {\n /**\n * Identifier for Sharing value of tabs\n */\n groupId?: string;\n\n /**\n * Enable persistent\n */\n persist?: boolean;\n\n /**\n * If true, updates the URL hash based on the tab's id\n */\n updateAnchor?: boolean;\n}\n\nconst TabsContext = createContext<{\n valueToIdMap: Map<string, string>;\n} | null>(null);\n\nfunction useTabContext() {\n const ctx = use(TabsContext);\n if (!ctx) throw new Error('You must wrap your component in <Tabs>');\n return ctx;\n}\n\nexport const TabsList = Primitive.TabsList;\n\nexport const TabsTrigger = Primitive.TabsTrigger;\n\nexport function Tabs({\n ref,\n groupId,\n persist = false,\n updateAnchor = false,\n defaultValue,\n value: _value,\n onValueChange: _onValueChange,\n ...props\n}: TabsProps) {\n const tabsRef = useRef<HTMLDivElement>(null);\n const valueToIdMap = useMemo(() => new Map<string, string>(), []);\n const [value, setValue] =\n _value === undefined\n ? // eslint-disable-next-line react-hooks/rules-of-hooks -- not supposed to change controlled/uncontrolled\n useState(defaultValue)\n : // eslint-disable-next-line react-hooks/rules-of-hooks -- not supposed to change controlled/uncontrolled\n [_value, useEffectEvent((v: string) => _onValueChange?.(v))];\n\n useLayoutEffect(() => {\n if (!groupId) return;\n let previous = sessionStorage.getItem(groupId);\n if (persist) previous ??= localStorage.getItem(groupId);\n if (previous) setValue(previous);\n\n const groupListeners = listeners.get(groupId) ?? new Set();\n groupListeners.add(setValue);\n listeners.set(groupId, groupListeners);\n return () => {\n groupListeners.delete(setValue);\n };\n }, [groupId, persist, setValue]);\n\n useLayoutEffect(() => {\n const hash = window.location.hash.slice(1);\n if (!hash) return;\n\n for (const [value, id] of valueToIdMap.entries()) {\n if (id === hash) {\n setValue(value);\n tabsRef.current?.scrollIntoView();\n break;\n }\n }\n }, [setValue, valueToIdMap]);\n\n return (\n <Primitive.Tabs\n ref={mergeRefs(ref, tabsRef)}\n value={value}\n onValueChange={(v: string) => {\n if (updateAnchor) {\n const id = valueToIdMap.get(v);\n\n if (id) {\n window.history.replaceState(null, '', `#${id}`);\n }\n }\n\n if (groupId) {\n const groupListeners = listeners.get(groupId);\n if (groupListeners) {\n for (const listener of groupListeners) listener(v);\n }\n\n sessionStorage.setItem(groupId, v);\n if (persist) localStorage.setItem(groupId, v);\n } else {\n setValue(v);\n }\n }}\n {...props}\n >\n <TabsContext value={useMemo(() => ({ valueToIdMap }), [valueToIdMap])}>\n {props.children}\n </TabsContext>\n </Primitive.Tabs>\n );\n}\n\nexport function TabsContent({ value, ...props }: ComponentProps<typeof Primitive.TabsContent>) {\n const { valueToIdMap } = useTabContext();\n\n if (props.id) {\n valueToIdMap.set(value, props.id);\n }\n\n return (\n <Primitive.TabsContent value={value} {...props}>\n {props.children}\n </Primitive.TabsContent>\n );\n}\n"],"mappings":";;;;;;;;AAgBA,MAAM,4BAAY,IAAI,KAAkC;AAmBxD,MAAM,cAAc,cAEV,KAAK;AAEf,SAAS,gBAAgB;CACvB,MAAM,MAAM,IAAI,YAAY;AAC5B,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yCAAyC;AACnE,QAAO;;AAGT,MAAa,WAAW,UAAU;AAElC,MAAa,cAAc,UAAU;AAErC,SAAgB,KAAK,EACnB,KACA,SACA,UAAU,OACV,eAAe,OACf,cACA,OAAO,QACP,eAAe,gBACf,GAAG,SACS;CACZ,MAAM,UAAU,OAAuB,KAAK;CAC5C,MAAM,eAAe,8BAAc,IAAI,KAAqB,EAAE,EAAE,CAAC;CACjE,MAAM,CAAC,OAAO,YACZ,WAAW,SAEP,SAAS,aAAa,GAEtB,CAAC,QAAQ,gBAAgB,MAAc,iBAAiB,EAAE,CAAC,CAAC;AAElE,uBAAsB;AACpB,MAAI,CAAC,QAAS;EACd,IAAI,WAAW,eAAe,QAAQ,QAAQ;AAC9C,MAAI,QAAS,cAAa,aAAa,QAAQ,QAAQ;AACvD,MAAI,SAAU,UAAS,SAAS;EAEhC,MAAM,iBAAiB,UAAU,IAAI,QAAQ,oBAAI,IAAI,KAAK;AAC1D,iBAAe,IAAI,SAAS;AAC5B,YAAU,IAAI,SAAS,eAAe;AACtC,eAAa;AACX,kBAAe,OAAO,SAAS;;IAEhC;EAAC;EAAS;EAAS;EAAS,CAAC;AAEhC,uBAAsB;EACpB,MAAM,OAAO,OAAO,SAAS,KAAK,MAAM,EAAE;AAC1C,MAAI,CAAC,KAAM;AAEX,OAAK,MAAM,CAACA,SAAO,OAAO,aAAa,SAAS,CAC9C,KAAI,OAAO,MAAM;AACf,YAASA,QAAM;AACf,WAAQ,SAAS,gBAAgB;AACjC;;IAGH,CAAC,UAAU,aAAa,CAAC;AAE5B,QACE,oBAAC,UAAU;EACT,KAAK,UAAU,KAAK,QAAQ;EACrB;EACP,gBAAgB,MAAc;AAC5B,OAAI,cAAc;IAChB,MAAM,KAAK,aAAa,IAAI,EAAE;AAE9B,QAAI,GACF,QAAO,QAAQ,aAAa,MAAM,IAAI,IAAI,KAAK;;AAInD,OAAI,SAAS;IACX,MAAM,iBAAiB,UAAU,IAAI,QAAQ;AAC7C,QAAI,eACF,MAAK,MAAM,YAAY,eAAgB,UAAS,EAAE;AAGpD,mBAAe,QAAQ,SAAS,EAAE;AAClC,QAAI,QAAS,cAAa,QAAQ,SAAS,EAAE;SAE7C,UAAS,EAAE;;EAGf,GAAI;YAEJ,oBAAC;GAAY,OAAO,eAAe,EAAE,cAAc,GAAG,CAAC,aAAa,CAAC;aAClE,MAAM;IACK;GACC;;AAIrB,SAAgB,YAAY,EAAE,OAAO,GAAG,SAAuD;CAC7F,MAAM,EAAE,iBAAiB,eAAe;AAExC,KAAI,MAAM,GACR,cAAa,IAAI,OAAO,MAAM,GAAG;AAGnC,QACE,oBAAC,UAAU;EAAmB;EAAO,GAAI;YACtC,MAAM;GACe"}
@@ -1,2 +1 @@
1
- export * from '@fumadocs/ui/contexts/i18n';
2
- //# sourceMappingURL=i18n.d.ts.map
1
+ export * from "@fumadocs/ui/contexts/i18n";
@@ -1 +1,12 @@
1
- export * from '@fumadocs/ui/contexts/i18n';
1
+ import { __reExport } from "../_virtual/rolldown_runtime.js";
2
+
3
+ export * from "@fumadocs/ui/contexts/i18n"
4
+
5
+ //#region src/contexts/i18n.tsx
6
+ var i18n_exports = {};
7
+ import * as import__fumadocs_ui_contexts_i18n from "@fumadocs/ui/contexts/i18n";
8
+ __reExport(i18n_exports, import__fumadocs_ui_contexts_i18n);
9
+
10
+ //#endregion
11
+ export { i18n_exports };
12
+ //# sourceMappingURL=i18n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.js","names":[],"sources":["../../src/contexts/i18n.tsx"],"sourcesContent":["export * from '@fumadocs/ui/contexts/i18n';\n"],"mappings":""}
@@ -1,2 +1,8 @@
1
- export * from '@fumadocs/ui/contexts/search';
1
+ export * from "@fumadocs/ui/contexts/search";
2
+
3
+ //#region src/contexts/search.d.ts
4
+
5
+ import * as import__fumadocs_ui_contexts_search from "@fumadocs/ui/contexts/search";
6
+ //#endregion
7
+ export { import__fumadocs_ui_contexts_search as search_d_exports };
2
8
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/contexts/search.tsx"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"search.d.ts","names":[],"sources":["../../src/contexts/search.tsx"],"sourcesContent":[],"mappings":""}
@@ -1 +1,12 @@
1
- export * from '@fumadocs/ui/contexts/search';
1
+ import { __reExport } from "../_virtual/rolldown_runtime.js";
2
+
3
+ export * from "@fumadocs/ui/contexts/search"
4
+
5
+ //#region src/contexts/search.tsx
6
+ var search_exports = {};
7
+ import * as import__fumadocs_ui_contexts_search from "@fumadocs/ui/contexts/search";
8
+ __reExport(search_exports, import__fumadocs_ui_contexts_search);
9
+
10
+ //#endregion
11
+ export { search_exports };
12
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","names":[],"sources":["../../src/contexts/search.tsx"],"sourcesContent":["export * from '@fumadocs/ui/contexts/search';\n"],"mappings":""}
@@ -1,2 +1 @@
1
- export * from '@fumadocs/ui/contexts/tree';
2
- //# sourceMappingURL=tree.d.ts.map
1
+ export * from "@fumadocs/ui/contexts/tree";
@@ -1 +1,12 @@
1
- export * from '@fumadocs/ui/contexts/tree';
1
+ import { __reExport } from "../_virtual/rolldown_runtime.js";
2
+
3
+ export * from "@fumadocs/ui/contexts/tree"
4
+
5
+ //#region src/contexts/tree.tsx
6
+ var tree_exports = {};
7
+ import * as import__fumadocs_ui_contexts_tree from "@fumadocs/ui/contexts/tree";
8
+ __reExport(tree_exports, import__fumadocs_ui_contexts_tree);
9
+
10
+ //#endregion
11
+ export { tree_exports };
12
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","names":[],"sources":["../../src/contexts/tree.tsx"],"sourcesContent":["export * from '@fumadocs/ui/contexts/tree';\n"],"mappings":""}
package/dist/i18n.d.ts CHANGED
@@ -1,2 +1 @@
1
- export * from '@fumadocs/ui/i18n';
2
- //# sourceMappingURL=i18n.d.ts.map
1
+ export * from "@fumadocs/ui/i18n";
package/dist/i18n.js CHANGED
@@ -1 +1,3 @@
1
- export * from '@fumadocs/ui/i18n';
1
+ export * from "@fumadocs/ui/i18n"
2
+
3
+ export { };
@@ -1,15 +1,32 @@
1
- import { type ComponentProps, type ReactNode } from 'react';
2
- import type { SidebarTab } from '../../components/sidebar/tabs/index.js';
3
- export declare const LayoutContext: import("react").Context<{
4
- isNavTransparent: boolean;
1
+ import { SidebarTab } from "../../components/sidebar/tabs/index.js";
2
+ import * as react_jsx_runtime30 from "react/jsx-runtime";
3
+ import * as react0 from "react";
4
+ import { ComponentProps, ReactNode } from "react";
5
+
6
+ //#region src/layouts/docs/client.d.ts
7
+ declare const LayoutContext: react0.Context<{
8
+ isNavTransparent: boolean;
5
9
  } | null>;
6
- export declare function LayoutContextProvider({ navTransparentMode, children, }: {
7
- navTransparentMode?: 'always' | 'top' | 'none';
8
- children: ReactNode;
9
- }): import("react/jsx-runtime").JSX.Element;
10
- export declare function LayoutHeader(props: ComponentProps<'header'>): import("react/jsx-runtime").JSX.Element;
11
- export declare function LayoutBody({ className, style, children, ...props }: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
12
- export declare function LayoutTabs({ options, ...props }: ComponentProps<'div'> & {
13
- options: SidebarTab[];
14
- }): import("react/jsx-runtime").JSX.Element;
10
+ declare function LayoutContextProvider({
11
+ navTransparentMode,
12
+ children
13
+ }: {
14
+ navTransparentMode?: 'always' | 'top' | 'none';
15
+ children: ReactNode;
16
+ }): react_jsx_runtime30.JSX.Element;
17
+ declare function LayoutHeader(props: ComponentProps<'header'>): react_jsx_runtime30.JSX.Element;
18
+ declare function LayoutBody({
19
+ className,
20
+ style,
21
+ children,
22
+ ...props
23
+ }: ComponentProps<'div'>): react_jsx_runtime30.JSX.Element;
24
+ declare function LayoutTabs({
25
+ options,
26
+ ...props
27
+ }: ComponentProps<'div'> & {
28
+ options: SidebarTab[];
29
+ }): react_jsx_runtime30.JSX.Element;
30
+ //#endregion
31
+ export { LayoutBody, LayoutContext, LayoutContextProvider, LayoutHeader, LayoutTabs };
15
32
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,eAAO,MAAM,aAAa;sBACN,OAAO;SACZ,CAAC;AAEhB,wBAAgB,qBAAqB,CAAC,EACpC,kBAA2B,EAC3B,QAAQ,GACT,EAAE;IACD,kBAAkB,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAkBA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAQ3D;AAED,wBAAgB,UAAU,CAAC,EACzB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,2CA8BvB;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB,2CA6BA"}
1
+ {"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/layouts/docs/client.tsx"],"sourcesContent":[],"mappings":";;;;;;cAWa,eAEE,MAAA,CAFW;;;iBAIV,qBAAA;;;;EAJH,kBAEE,CAAA,EAAA,QAAA,GAAA,KAFW,GAAA,MAAA;EAIV,QAAA,EAKJ,SALI;CACd,CAAA,EAKD,mBAAA,CAAA,GAAA,CAAA,OALC;AACA,iBAsBc,YAAA,CAtBd,KAAA,EAsBkC,cAtBlC,CAAA,QAAA,CAAA,CAAA,EAsB0D,mBAAA,CAAA,GAAA,CAAA,OAtB1D;AAGU,iBA6BI,UAAA,CA7BJ;EAAA,SAAA;EAAA,KAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA6ByD,cA7BzD,CAAA,KAAA,CAAA,CAAA,EA6B8E,mBAAA,CAAA,GAAA,CAAA,OA7B9E;AACX,iBA0De,UAAA,CA1Df;EAAA,OAAA;EAAA,GAAA;AAkBD,CAlBC,EA6DE,cA7DF,CAAA,KAAA,CAAA,GAAA;EAAA,OAAA,EA8DU,UA9DV,EAAA;AAkBD,CAAA,CAAA,EA6CC,mBAAA,CAAA,GAAA,CAAA,OA7CmC"}
@@ -1,41 +1,68 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import { createContext, use, useMemo, } from 'react';
4
- import { cn } from '@fumadocs/ui/cn';
5
- import { useSidebar } from '../../components/sidebar/base.js';
6
- import { usePathname } from 'fumadocs-core/framework';
7
- import Link from 'fumadocs-core/link';
8
- import { isTabActive } from '../../components/sidebar/tabs/dropdown.js';
9
- import { useIsScrollTop } from '@fumadocs/ui/hooks/use-is-scroll-top';
10
- export const LayoutContext = createContext(null);
11
- export function LayoutContextProvider({ navTransparentMode = 'none', children, }) {
12
- const isTop = useIsScrollTop({ enabled: navTransparentMode === 'top' }) ?? true;
13
- const isNavTransparent = navTransparentMode === 'top' ? isTop : navTransparentMode === 'always';
14
- return (_jsx(LayoutContext, { value: useMemo(() => ({
15
- isNavTransparent,
16
- }), [isNavTransparent]), children: children }));
2
+
3
+ import { useSidebar } from "../../components/sidebar/base.js";
4
+ import { isTabActive } from "../../components/sidebar/tabs/dropdown.js";
5
+ import Link from "fumadocs-core/link";
6
+ import { usePathname } from "fumadocs-core/framework";
7
+ import { cn } from "@fumadocs/ui/cn";
8
+ import { jsx } from "react/jsx-runtime";
9
+ import { createContext, use, useMemo } from "react";
10
+ import { useIsScrollTop } from "@fumadocs/ui/hooks/use-is-scroll-top";
11
+
12
+ //#region src/layouts/docs/client.tsx
13
+ const LayoutContext = createContext(null);
14
+ function LayoutContextProvider({ navTransparentMode = "none", children }) {
15
+ const isTop = useIsScrollTop({ enabled: navTransparentMode === "top" }) ?? true;
16
+ const isNavTransparent = navTransparentMode === "top" ? isTop : navTransparentMode === "always";
17
+ return /* @__PURE__ */ jsx(LayoutContext, {
18
+ value: useMemo(() => ({ isNavTransparent }), [isNavTransparent]),
19
+ children
20
+ });
17
21
  }
18
- export function LayoutHeader(props) {
19
- const { isNavTransparent } = use(LayoutContext);
20
- return (_jsx("header", { "data-transparent": isNavTransparent, ...props, children: props.children }));
22
+ function LayoutHeader(props) {
23
+ const { isNavTransparent } = use(LayoutContext);
24
+ return /* @__PURE__ */ jsx("header", {
25
+ "data-transparent": isNavTransparent,
26
+ ...props,
27
+ children: props.children
28
+ });
21
29
  }
22
- export function LayoutBody({ className, style, children, ...props }) {
23
- const { collapsed } = useSidebar();
24
- return (_jsx("div", { id: "nd-docs-layout", className: cn('grid transition-[grid-template-columns] overflow-x-clip min-h-(--fd-docs-height) auto-cols-auto auto-rows-auto [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-toc-popover-height:0px] [--fd-sidebar-width:0px] [--fd-toc-width:0px]', className), "data-sidebar-collapsed": collapsed, style: {
25
- gridTemplate: `"sidebar header toc"
30
+ function LayoutBody({ className, style, children, ...props }) {
31
+ const { collapsed } = useSidebar();
32
+ return /* @__PURE__ */ jsx("div", {
33
+ id: "nd-docs-layout",
34
+ className: cn("grid transition-[grid-template-columns] overflow-x-clip min-h-(--fd-docs-height) auto-cols-auto auto-rows-auto [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-toc-popover-height:0px] [--fd-sidebar-width:0px] [--fd-toc-width:0px]", className),
35
+ "data-sidebar-collapsed": collapsed,
36
+ style: {
37
+ gridTemplate: `"sidebar header toc"
26
38
  "sidebar toc-popover toc"
27
39
  "sidebar main toc" 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr)`,
28
- '--fd-docs-row-1': 'var(--fd-banner-height, 0px)',
29
- '--fd-docs-row-2': 'calc(var(--fd-docs-row-1) + var(--fd-header-height))',
30
- '--fd-docs-row-3': 'calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height))',
31
- '--fd-sidebar-col': collapsed ? '0px' : 'var(--fd-sidebar-width)',
32
- ...style,
33
- }, ...props, children: children }));
40
+ "--fd-docs-row-1": "var(--fd-banner-height, 0px)",
41
+ "--fd-docs-row-2": "calc(var(--fd-docs-row-1) + var(--fd-header-height))",
42
+ "--fd-docs-row-3": "calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height))",
43
+ "--fd-sidebar-col": collapsed ? "0px" : "var(--fd-sidebar-width)",
44
+ ...style
45
+ },
46
+ ...props,
47
+ children
48
+ });
34
49
  }
35
- export function LayoutTabs({ options, ...props }) {
36
- const pathname = usePathname();
37
- const selected = useMemo(() => {
38
- return options.findLast((option) => isTabActive(option, pathname));
39
- }, [options, pathname]);
40
- return (_jsx("div", { ...props, className: cn('flex flex-row items-end gap-6 overflow-auto [grid-area:main]', props.className), children: options.map((option, i) => (_jsx(Link, { href: option.url, className: cn('inline-flex border-b-2 border-transparent transition-colors items-center pb-1.5 font-medium gap-2 text-fd-muted-foreground text-sm text-nowrap hover:text-fd-accent-foreground', option.unlisted && selected !== option && 'hidden', selected === option && 'border-fd-primary text-fd-primary'), children: option.title }, i))) }));
50
+ function LayoutTabs({ options, ...props }) {
51
+ const pathname = usePathname();
52
+ const selected = useMemo(() => {
53
+ return options.findLast((option) => isTabActive(option, pathname));
54
+ }, [options, pathname]);
55
+ return /* @__PURE__ */ jsx("div", {
56
+ ...props,
57
+ className: cn("flex flex-row items-end gap-6 overflow-auto [grid-area:main]", props.className),
58
+ children: options.map((option, i) => /* @__PURE__ */ jsx(Link, {
59
+ href: option.url,
60
+ className: cn("inline-flex border-b-2 border-transparent transition-colors items-center pb-1.5 font-medium gap-2 text-fd-muted-foreground text-sm text-nowrap hover:text-fd-accent-foreground", option.unlisted && selected !== option && "hidden", selected === option && "border-fd-primary text-fd-primary"),
61
+ children: option.title
62
+ }, i))
63
+ });
41
64
  }
65
+
66
+ //#endregion
67
+ export { LayoutBody, LayoutContext, LayoutContextProvider, LayoutHeader, LayoutTabs };
68
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","names":[],"sources":["../../../src/layouts/docs/client.tsx"],"sourcesContent":["'use client';\n\nimport { type ComponentProps, createContext, type ReactNode, use, useMemo } from 'react';\nimport { cn } from '@fumadocs/ui/cn';\nimport { useSidebar } from '@/components/sidebar/base';\nimport { usePathname } from 'fumadocs-core/framework';\nimport Link from 'fumadocs-core/link';\nimport type { SidebarTab } from '@/components/sidebar/tabs';\nimport { isTabActive } from '@/components/sidebar/tabs/dropdown';\nimport { useIsScrollTop } from '@fumadocs/ui/hooks/use-is-scroll-top';\n\nexport const LayoutContext = createContext<{\n isNavTransparent: boolean;\n} | null>(null);\n\nexport function LayoutContextProvider({\n navTransparentMode = 'none',\n children,\n}: {\n navTransparentMode?: 'always' | 'top' | 'none';\n children: ReactNode;\n}) {\n const isTop = useIsScrollTop({ enabled: navTransparentMode === 'top' }) ?? true;\n const isNavTransparent = navTransparentMode === 'top' ? isTop : navTransparentMode === 'always';\n\n return (\n <LayoutContext\n value={useMemo(\n () => ({\n isNavTransparent,\n }),\n [isNavTransparent],\n )}\n >\n {children}\n </LayoutContext>\n );\n}\n\nexport function LayoutHeader(props: ComponentProps<'header'>) {\n const { isNavTransparent } = use(LayoutContext)!;\n\n return (\n <header data-transparent={isNavTransparent} {...props}>\n {props.children}\n </header>\n );\n}\n\nexport function LayoutBody({ className, style, children, ...props }: ComponentProps<'div'>) {\n const { collapsed } = useSidebar();\n\n return (\n <div\n id=\"nd-docs-layout\"\n className={cn(\n 'grid transition-[grid-template-columns] overflow-x-clip min-h-(--fd-docs-height) auto-cols-auto auto-rows-auto [--fd-docs-height:100dvh] [--fd-header-height:0px] [--fd-toc-popover-height:0px] [--fd-sidebar-width:0px] [--fd-toc-width:0px]',\n className,\n )}\n data-sidebar-collapsed={collapsed}\n style={\n {\n gridTemplate: `\"sidebar header toc\"\n \"sidebar toc-popover toc\"\n \"sidebar main toc\" 1fr / minmax(var(--fd-sidebar-col), 1fr) minmax(0, calc(var(--fd-layout-width,97rem) - var(--fd-sidebar-width) - var(--fd-toc-width))) minmax(min-content, 1fr)`,\n '--fd-docs-row-1': 'var(--fd-banner-height, 0px)',\n '--fd-docs-row-2': 'calc(var(--fd-docs-row-1) + var(--fd-header-height))',\n '--fd-docs-row-3': 'calc(var(--fd-docs-row-2) + var(--fd-toc-popover-height))',\n '--fd-sidebar-col': collapsed ? '0px' : 'var(--fd-sidebar-width)',\n ...style,\n } as object\n }\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport function LayoutTabs({\n options,\n ...props\n}: ComponentProps<'div'> & {\n options: SidebarTab[];\n}) {\n const pathname = usePathname();\n const selected = useMemo(() => {\n return options.findLast((option) => isTabActive(option, pathname));\n }, [options, pathname]);\n\n return (\n <div\n {...props}\n className={cn(\n 'flex flex-row items-end gap-6 overflow-auto [grid-area:main]',\n props.className,\n )}\n >\n {options.map((option, i) => (\n <Link\n key={i}\n href={option.url}\n className={cn(\n 'inline-flex border-b-2 border-transparent transition-colors items-center pb-1.5 font-medium gap-2 text-fd-muted-foreground text-sm text-nowrap hover:text-fd-accent-foreground',\n option.unlisted && selected !== option && 'hidden',\n selected === option && 'border-fd-primary text-fd-primary',\n )}\n >\n {option.title}\n </Link>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,gBAAgB,cAEnB,KAAK;AAEf,SAAgB,sBAAsB,EACpC,qBAAqB,QACrB,YAIC;CACD,MAAM,QAAQ,eAAe,EAAE,SAAS,uBAAuB,OAAO,CAAC,IAAI;CAC3E,MAAM,mBAAmB,uBAAuB,QAAQ,QAAQ,uBAAuB;AAEvF,QACE,oBAAC;EACC,OAAO,eACE,EACL,kBACD,GACD,CAAC,iBAAiB,CACnB;EAEA;GACa;;AAIpB,SAAgB,aAAa,OAAiC;CAC5D,MAAM,EAAE,qBAAqB,IAAI,cAAc;AAE/C,QACE,oBAAC;EAAO,oBAAkB;EAAkB,GAAI;YAC7C,MAAM;GACA;;AAIb,SAAgB,WAAW,EAAE,WAAW,OAAO,UAAU,GAAG,SAAgC;CAC1F,MAAM,EAAE,cAAc,YAAY;AAElC,QACE,oBAAC;EACC,IAAG;EACH,WAAW,GACT,iPACA,UACD;EACD,0BAAwB;EACxB,OACE;GACE,cAAc;;;GAGd,mBAAmB;GACnB,mBAAmB;GACnB,mBAAmB;GACnB,oBAAoB,YAAY,QAAQ;GACxC,GAAG;GACJ;EAEH,GAAI;EAEH;GACG;;AAIV,SAAgB,WAAW,EACzB,SACA,GAAG,SAGF;CACD,MAAM,WAAW,aAAa;CAC9B,MAAM,WAAW,cAAc;AAC7B,SAAO,QAAQ,UAAU,WAAW,YAAY,QAAQ,SAAS,CAAC;IACjE,CAAC,SAAS,SAAS,CAAC;AAEvB,QACE,oBAAC;EACC,GAAI;EACJ,WAAW,GACT,gEACA,MAAM,UACP;YAEA,QAAQ,KAAK,QAAQ,MACpB,oBAAC;GAEC,MAAM,OAAO;GACb,WAAW,GACT,kLACA,OAAO,YAAY,aAAa,UAAU,UAC1C,aAAa,UAAU,oCACxB;aAEA,OAAO;KARH,EASA,CACP;GACE"}
@@ -1,36 +1,60 @@
1
- import type * as PageTree from 'fumadocs-core/page-tree';
2
- import { type ComponentProps, type HTMLAttributes, type ReactNode } from 'react';
3
- import { Sidebar } from './sidebar.js';
4
- import { type BaseLayoutProps } from '../../layouts/shared/index.js';
5
- import { type GetSidebarTabsOptions } from '../../components/sidebar/tabs/index.js';
6
- import type { SidebarPageTreeComponents } from '../../components/sidebar/page-tree.js';
7
- import { type SidebarTabWithProps } from '../../components/sidebar/tabs/dropdown.js';
8
- export interface DocsLayoutProps extends BaseLayoutProps {
9
- tree: PageTree.Root;
10
- sidebar?: SidebarOptions;
11
- tabMode?: 'top' | 'auto';
12
- /**
13
- * Props for the `div` container
14
- */
15
- containerProps?: HTMLAttributes<HTMLDivElement>;
1
+ import { SidebarProvider } from "../../components/sidebar/base.js";
2
+ import { SidebarPageTreeComponents } from "../../components/sidebar/page-tree.js";
3
+ import { GetSidebarTabsOptions } from "../../components/sidebar/tabs/index.js";
4
+ import { SidebarTabWithProps } from "../../components/sidebar/tabs/dropdown.js";
5
+ import "./sidebar.js";
6
+ import { BaseLayoutProps } from "../shared/index.js";
7
+ import * as react_jsx_runtime115 from "react/jsx-runtime";
8
+ import { ComponentProps, HTMLAttributes, ReactNode } from "react";
9
+ import * as PageTree from "fumadocs-core/page-tree";
10
+
11
+ //#region src/layouts/docs/index.d.ts
12
+ interface DocsLayoutProps extends BaseLayoutProps {
13
+ tree: PageTree.Root;
14
+ sidebar?: SidebarOptions;
15
+ tabMode?: 'top' | 'auto';
16
+ /**
17
+ * Props for the `div` container
18
+ */
19
+ containerProps?: HTMLAttributes<HTMLDivElement>;
16
20
  }
17
- interface SidebarOptions extends ComponentProps<'aside'>, Pick<ComponentProps<typeof Sidebar>, 'defaultOpenLevel' | 'prefetch'> {
18
- enabled?: boolean;
19
- component?: ReactNode;
20
- components?: Partial<SidebarPageTreeComponents>;
21
- /**
22
- * Root Toggle options
23
- */
24
- tabs?: SidebarTabWithProps[] | GetSidebarTabsOptions | false;
25
- banner?: ReactNode;
26
- footer?: ReactNode;
27
- /**
28
- * Support collapsing the sidebar on desktop mode
29
- *
30
- * @defaultValue true
31
- */
32
- collapsible?: boolean;
21
+ interface SidebarOptions extends ComponentProps<'aside'>, Pick<ComponentProps<typeof SidebarProvider>, 'defaultOpenLevel' | 'prefetch'> {
22
+ enabled?: boolean;
23
+ component?: ReactNode;
24
+ components?: Partial<SidebarPageTreeComponents>;
25
+ /**
26
+ * Root Toggle options
27
+ */
28
+ tabs?: SidebarTabWithProps[] | GetSidebarTabsOptions | false;
29
+ banner?: ReactNode;
30
+ footer?: ReactNode;
31
+ /**
32
+ * Support collapsing the sidebar on desktop mode
33
+ *
34
+ * @defaultValue true
35
+ */
36
+ collapsible?: boolean;
33
37
  }
34
- export declare function DocsLayout({ nav: { transparentMode, ...nav }, sidebar: { tabs: sidebarTabs, enabled: sidebarEnabled, defaultOpenLevel, prefetch, ...sidebarProps }, searchToggle, themeSwitch, tabMode, i18n, children, tree, ...props }: DocsLayoutProps): import("react/jsx-runtime").JSX.Element;
35
- export {};
38
+ declare function DocsLayout({
39
+ nav: {
40
+ transparentMode,
41
+ ...nav
42
+ },
43
+ sidebar: {
44
+ tabs: sidebarTabs,
45
+ enabled: sidebarEnabled,
46
+ defaultOpenLevel,
47
+ prefetch,
48
+ ...sidebarProps
49
+ },
50
+ searchToggle,
51
+ themeSwitch,
52
+ tabMode,
53
+ i18n,
54
+ children,
55
+ tree,
56
+ ...props
57
+ }: DocsLayoutProps): react_jsx_runtime115.JSX.Element;
58
+ //#endregion
59
+ export { DocsLayout, DocsLayoutProps };
36
60
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAIf,OAAO,EACL,OAAO,EAQR,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AAkB1B,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,UAAU,cACR,SACE,cAAc,CAAC,OAAO,CAAC,EACvB,IAAI,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAAC;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEhD;;OAEG;IACH,IAAI,CAAC,EAAE,mBAAmB,EAAE,GAAG,qBAAqB,GAAG,KAAK,CAAC;IAE7D,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,EAAO,EACrC,OAAO,EAAE,EACP,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,cAAqB,EAC9B,gBAAgB,EAChB,QAAQ,EACR,GAAG,YAAY,EACX,EACN,YAAiB,EACjB,WAAgB,EAChB,OAAgB,EAChB,IAAY,EACZ,QAAQ,EACR,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,eAAe,2CAqNjB"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/layouts/docs/index.tsx"],"sourcesContent":[],"mappings":";;;;;;;;;;;UA0BiB,eAAA,SAAwB;QACjC,QAAA,CAAS;YAEL;;EAHK;;;EAUiB,cAAA,CAAA,EAAf,cAAe,CAAA,cAAA,CAAA;;UAGxB,cAAA,SAEN,cAfqC,CAAA,OAAA,CAAA,EAgBrC,IAhBqC,CAgBhC,cAhBgC,CAAA,OAgBV,eAhBU,CAAA,EAAA,kBAAA,GAAA,UAAA,CAAA,CAAA;EAAe,OAAA,CAAA,EAAA,OAAA;EAa9C,SAAA,CAAA,EAKI,SAJZ;EAE6B,UAAA,CAAA,EAGhB,OAHgB,CAGR,yBAHQ,CAAA;EAAtB;;;EAGM,IAAA,CAAA,EAKN,mBALM,EAAA,GAKkB,qBALlB,GAAA,KAAA;EAKN,MAAA,CAAA,EAEE,SAFF;EAAwB,MAAA,CAAA,EAGtB,SAHsB;EAEtB;;;;;EAWK,WAAA,CAAA,EAAU,OAAA;;AAGhB,iBAHM,UAAA,CAGN;EAAA,GAAA,EAAA;IAAA,eAAA;IAAA,GAAA;EAAA,CAAA;EAAA,OAAA,EAAA;IAAA,IAAA,EAAA,WAAA;IAAA,OAAA,EACG,cADH;IAAA,gBAAA;IAAA,QAAA;IAAA,GAAA;EAAA,CAAA;EAAA,YAAA;EAAA,WAAA;EAAA,OAAA;EAAA,IAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAaP,eAbO,CAAA,EAaQ,oBAAA,CAAA,GAAA,CAAA,OAbR"}