@fumadocs/base-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 (265) hide show
  1. package/dist/_virtual/rolldown_runtime.js +36 -0
  2. package/dist/components/accordion.d.ts +23 -7
  3. package/dist/components/accordion.d.ts.map +1 -1
  4. package/dist/components/accordion.js +66 -36
  5. package/dist/components/accordion.js.map +1 -0
  6. package/dist/components/banner.d.ts +33 -22
  7. package/dist/components/banner.d.ts.map +1 -1
  8. package/dist/components/banner.js +63 -47
  9. package/dist/components/banner.js.map +1 -0
  10. package/dist/components/callout.d.ts +41 -17
  11. package/dist/components/callout.d.ts.map +1 -1
  12. package/dist/components/callout.js +57 -28
  13. package/dist/components/callout.js.map +1 -0
  14. package/dist/components/card.d.ts +19 -9
  15. package/dist/components/card.d.ts.map +1 -1
  16. package/dist/components/card.js +39 -8
  17. package/dist/components/card.js.map +1 -0
  18. package/dist/components/codeblock.d.ts +66 -40
  19. package/dist/components/codeblock.d.ts.map +1 -1
  20. package/dist/components/codeblock.js +116 -58
  21. package/dist/components/codeblock.js.map +1 -0
  22. package/dist/components/dialog/search-algolia.d.ts +37 -23
  23. package/dist/components/dialog/search-algolia.d.ts.map +1 -1
  24. package/dist/components/dialog/search-algolia.js +64 -31
  25. package/dist/components/dialog/search-algolia.js.map +1 -0
  26. package/dist/components/dialog/search-default.d.ts +42 -27
  27. package/dist/components/dialog/search-default.d.ts.map +1 -1
  28. package/dist/components/dialog/search-default.js +64 -38
  29. package/dist/components/dialog/search-default.js.map +1 -0
  30. package/dist/components/dialog/search-orama.d.ts +41 -25
  31. package/dist/components/dialog/search-orama.d.ts.map +1 -1
  32. package/dist/components/dialog/search-orama.js +68 -35
  33. package/dist/components/dialog/search-orama.js.map +1 -0
  34. package/dist/components/dialog/search.d.ts +107 -64
  35. package/dist/components/dialog/search.d.ts.map +1 -1
  36. package/dist/components/dialog/search.js +264 -185
  37. package/dist/components/dialog/search.js.map +1 -0
  38. package/dist/components/dynamic-codeblock.d.ts +30 -19
  39. package/dist/components/dynamic-codeblock.d.ts.map +1 -1
  40. package/dist/components/dynamic-codeblock.js +60 -27
  41. package/dist/components/dynamic-codeblock.js.map +1 -0
  42. package/dist/components/files.d.ts +32 -16
  43. package/dist/components/files.d.ts.map +1 -1
  44. package/dist/components/files.js +40 -14
  45. package/dist/components/files.js.map +1 -0
  46. package/dist/components/github-info.d.ts +18 -7
  47. package/dist/components/github-info.d.ts.map +1 -1
  48. package/dist/components/github-info.js +63 -48
  49. package/dist/components/github-info.js.map +1 -0
  50. package/dist/components/heading.d.ts +11 -4
  51. package/dist/components/heading.d.ts.map +1 -1
  52. package/dist/components/heading.js +28 -8
  53. package/dist/components/heading.js.map +1 -0
  54. package/dist/components/image-zoom-CtfZieBH.css +80 -0
  55. package/dist/components/image-zoom-CtfZieBH.css.map +1 -0
  56. package/dist/components/image-zoom.d.ts +23 -14
  57. package/dist/components/image-zoom.d.ts.map +1 -1
  58. package/dist/components/image-zoom.js +32 -19
  59. package/dist/components/image-zoom.js.map +1 -0
  60. package/dist/components/image-zoom2.js +1 -0
  61. package/dist/components/inline-toc.d.ts +15 -6
  62. package/dist/components/inline-toc.d.ts.map +1 -1
  63. package/dist/components/inline-toc.js +28 -8
  64. package/dist/components/inline-toc.js.map +1 -0
  65. package/dist/components/sidebar/base.d.ts +105 -65
  66. package/dist/components/sidebar/base.d.ts.map +1 -1
  67. package/dist/components/sidebar/base.js +278 -191
  68. package/dist/components/sidebar/base.js.map +1 -0
  69. package/dist/components/sidebar/link-item.d.ts +23 -10
  70. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  71. package/dist/components/sidebar/link-item.js +32 -12
  72. package/dist/components/sidebar/link-item.js.map +1 -0
  73. package/dist/components/sidebar/page-tree.d.ts +28 -17
  74. package/dist/components/sidebar/page-tree.d.ts.map +1 -1
  75. package/dist/components/sidebar/page-tree.js +57 -33
  76. package/dist/components/sidebar/page-tree.js.map +1 -0
  77. package/dist/components/sidebar/tabs/dropdown.d.ts +18 -9
  78. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  79. package/dist/components/sidebar/tabs/dropdown.js +75 -31
  80. package/dist/components/sidebar/tabs/dropdown.js.map +1 -0
  81. package/dist/components/sidebar/tabs/index.d.ts +24 -18
  82. package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
  83. package/dist/components/sidebar/tabs/index.js +45 -45
  84. package/dist/components/sidebar/tabs/index.js.map +1 -0
  85. package/dist/components/steps.d.ts +16 -7
  86. package/dist/components/steps.d.ts.map +1 -1
  87. package/dist/components/steps.js +17 -5
  88. package/dist/components/steps.js.map +1 -0
  89. package/dist/components/tabs.d.ts +49 -28
  90. package/dist/components/tabs.d.ts.map +1 -1
  91. package/dist/components/tabs.js +88 -51
  92. package/dist/components/tabs.js.map +1 -0
  93. package/dist/components/toc/clerk.d.ts +1 -2
  94. package/dist/components/toc/clerk.js +12 -1
  95. package/dist/components/toc/clerk.js.map +1 -0
  96. package/dist/components/toc/default.d.ts +1 -2
  97. package/dist/components/toc/default.js +12 -1
  98. package/dist/components/toc/default.js.map +1 -0
  99. package/dist/components/toc/index.d.ts +1 -2
  100. package/dist/components/toc/index.js +12 -1
  101. package/dist/components/toc/index.js.map +1 -0
  102. package/dist/components/type-table.d.ts +36 -29
  103. package/dist/components/type-table.d.ts.map +1 -1
  104. package/dist/components/type-table.js +106 -25
  105. package/dist/components/type-table.js.map +1 -0
  106. package/dist/components/ui/accordion.d.ts +30 -7
  107. package/dist/components/ui/accordion.d.ts.map +1 -1
  108. package/dist/components/ui/accordion.js +39 -14
  109. package/dist/components/ui/accordion.js.map +1 -0
  110. package/dist/components/ui/button.d.ts +12 -7
  111. package/dist/components/ui/button.d.ts.map +1 -1
  112. package/dist/components/ui/button.js +21 -18
  113. package/dist/components/ui/button.js.map +1 -0
  114. package/dist/components/ui/collapsible.d.ts +19 -8
  115. package/dist/components/ui/collapsible.d.ts.map +1 -1
  116. package/dist/components/ui/collapsible.js +18 -7
  117. package/dist/components/ui/collapsible.js.map +1 -0
  118. package/dist/components/ui/navigation-menu.d.ts +15 -11
  119. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  120. package/dist/components/ui/navigation-menu.js +33 -14
  121. package/dist/components/ui/navigation-menu.js.map +1 -0
  122. package/dist/components/ui/popover.d.ts +11 -7
  123. package/dist/components/ui/popover.d.ts.map +1 -1
  124. package/dist/components/ui/popover.js +26 -10
  125. package/dist/components/ui/popover.js.map +1 -0
  126. package/dist/components/ui/scroll-area.d.ts +11 -7
  127. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  128. package/dist/components/ui/scroll-area.js +35 -10
  129. package/dist/components/ui/scroll-area.js.map +1 -0
  130. package/dist/components/ui/tabs.d.ts +39 -20
  131. package/dist/components/ui/tabs.d.ts.map +1 -1
  132. package/dist/components/ui/tabs.js +75 -73
  133. package/dist/components/ui/tabs.js.map +1 -0
  134. package/dist/contexts/i18n.d.ts +1 -2
  135. package/dist/contexts/i18n.js +12 -1
  136. package/dist/contexts/i18n.js.map +1 -0
  137. package/dist/contexts/search.d.ts +7 -1
  138. package/dist/contexts/search.d.ts.map +1 -1
  139. package/dist/contexts/search.js +12 -1
  140. package/dist/contexts/search.js.map +1 -0
  141. package/dist/contexts/tree.d.ts +1 -2
  142. package/dist/contexts/tree.js +12 -1
  143. package/dist/contexts/tree.js.map +1 -0
  144. package/dist/i18n.d.ts +1 -2
  145. package/dist/i18n.js +3 -1
  146. package/dist/layouts/docs/client.d.ts +30 -13
  147. package/dist/layouts/docs/client.d.ts.map +1 -1
  148. package/dist/layouts/docs/client.js +61 -34
  149. package/dist/layouts/docs/client.js.map +1 -0
  150. package/dist/layouts/docs/index.d.ts +55 -32
  151. package/dist/layouts/docs/index.d.ts.map +1 -1
  152. package/dist/layouts/docs/index.js +177 -68
  153. package/dist/layouts/docs/index.js.map +1 -0
  154. package/dist/layouts/docs/page/client.d.ts +43 -21
  155. package/dist/layouts/docs/page/client.d.ts.map +1 -1
  156. package/dist/layouts/docs/page/client.js +213 -105
  157. package/dist/layouts/docs/page/client.js.map +1 -0
  158. package/dist/layouts/docs/page/index.d.ts +82 -46
  159. package/dist/layouts/docs/page/index.d.ts.map +1 -1
  160. package/dist/layouts/docs/page/index.js +98 -45
  161. package/dist/layouts/docs/page/index.js.map +1 -0
  162. package/dist/layouts/docs/sidebar.d.ts +62 -16
  163. package/dist/layouts/docs/sidebar.d.ts.map +1 -1
  164. package/dist/layouts/docs/sidebar.js +150 -82
  165. package/dist/layouts/docs/sidebar.js.map +1 -0
  166. package/dist/layouts/home/client.d.ts +18 -5
  167. package/dist/layouts/home/client.d.ts.map +1 -1
  168. package/dist/layouts/home/client.js +273 -126
  169. package/dist/layouts/home/client.js.map +1 -0
  170. package/dist/layouts/home/index.d.ts +10 -5
  171. package/dist/layouts/home/index.d.ts.map +1 -1
  172. package/dist/layouts/home/index.js +24 -7
  173. package/dist/layouts/home/index.js.map +1 -0
  174. package/dist/layouts/home/navbar.d.ts +19 -6
  175. package/dist/layouts/home/navbar.d.ts.map +1 -1
  176. package/dist/layouts/home/navbar.js +31 -12
  177. package/dist/layouts/home/navbar.js.map +1 -0
  178. package/dist/layouts/notebook/client.d.ts +44 -20
  179. package/dist/layouts/notebook/client.d.ts.map +1 -1
  180. package/dist/layouts/notebook/client.js +148 -93
  181. package/dist/layouts/notebook/client.js.map +1 -0
  182. package/dist/layouts/notebook/index.d.ts +34 -30
  183. package/dist/layouts/notebook/index.d.ts.map +1 -1
  184. package/dist/layouts/notebook/index.js +216 -90
  185. package/dist/layouts/notebook/index.js.map +1 -0
  186. package/dist/layouts/notebook/page/client.d.ts +43 -21
  187. package/dist/layouts/notebook/page/client.d.ts.map +1 -1
  188. package/dist/layouts/notebook/page/client.js +213 -105
  189. package/dist/layouts/notebook/page/client.js.map +1 -0
  190. package/dist/layouts/notebook/page/index.d.ts +82 -46
  191. package/dist/layouts/notebook/page/index.d.ts.map +1 -1
  192. package/dist/layouts/notebook/page/index.js +98 -45
  193. package/dist/layouts/notebook/page/index.js.map +1 -0
  194. package/dist/layouts/notebook/sidebar.d.ts +58 -16
  195. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  196. package/dist/layouts/notebook/sidebar.js +121 -79
  197. package/dist/layouts/notebook/sidebar.js.map +1 -0
  198. package/dist/layouts/shared/index.d.ts +62 -50
  199. package/dist/layouts/shared/index.d.ts.map +1 -1
  200. package/dist/layouts/shared/index.js +36 -20
  201. package/dist/layouts/shared/index.js.map +1 -0
  202. package/dist/layouts/shared/language-toggle.d.ts +9 -4
  203. package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
  204. package/dist/layouts/shared/language-toggle.js +44 -21
  205. package/dist/layouts/shared/language-toggle.js.map +1 -0
  206. package/dist/layouts/shared/search-toggle.d.ts +20 -8
  207. package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
  208. package/dist/layouts/shared/search-toggle.js +53 -24
  209. package/dist/layouts/shared/search-toggle.js.map +1 -0
  210. package/dist/layouts/shared/theme-toggle.d.ts +13 -4
  211. package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
  212. package/dist/layouts/shared/theme-toggle.js +58 -34
  213. package/dist/layouts/shared/theme-toggle.js.map +1 -0
  214. package/dist/mdx.d.ts +34 -29
  215. package/dist/mdx.d.ts.map +1 -1
  216. package/dist/mdx.js +68 -34
  217. package/dist/mdx.js.map +1 -0
  218. package/dist/mdx.server.d.ts +9 -5
  219. package/dist/mdx.server.d.ts.map +1 -1
  220. package/dist/mdx.server.js +21 -13
  221. package/dist/mdx.server.js.map +1 -0
  222. package/dist/og.d.ts +1 -2
  223. package/dist/og.js +3 -1
  224. package/dist/page.d.ts +30 -20
  225. package/dist/page.d.ts.map +1 -1
  226. package/dist/page.js +34 -18
  227. package/dist/page.js.map +1 -0
  228. package/dist/provider/base.d.ts +44 -34
  229. package/dist/provider/base.d.ts.map +1 -1
  230. package/dist/provider/base.js +37 -17
  231. package/dist/provider/base.js.map +1 -0
  232. package/dist/provider/next.d.ts +20 -12
  233. package/dist/provider/next.d.ts.map +1 -1
  234. package/dist/provider/next.js +19 -5
  235. package/dist/provider/next.js.map +1 -0
  236. package/dist/provider/react-router.d.ts +20 -12
  237. package/dist/provider/react-router.d.ts.map +1 -1
  238. package/dist/provider/react-router.js +19 -5
  239. package/dist/provider/react-router.js.map +1 -0
  240. package/dist/provider/tanstack.d.ts +20 -12
  241. package/dist/provider/tanstack.d.ts.map +1 -1
  242. package/dist/provider/tanstack.js +19 -5
  243. package/dist/provider/tanstack.js.map +1 -0
  244. package/dist/provider/waku.d.ts +20 -12
  245. package/dist/provider/waku.d.ts.map +1 -1
  246. package/dist/provider/waku.js +19 -5
  247. package/dist/provider/waku.js.map +1 -0
  248. package/dist/style.css +24 -6
  249. package/dist/utils/use-copy-button.d.ts +1 -2
  250. package/dist/utils/use-copy-button.js +3 -1
  251. package/dist/utils/use-footer-items.d.ts +1 -2
  252. package/dist/utils/use-footer-items.js +3 -1
  253. package/dist/utils/use-is-scroll-top.d.ts +1 -2
  254. package/dist/utils/use-is-scroll-top.js +3 -1
  255. package/package.json +47 -48
  256. package/dist/components/toc/clerk.d.ts.map +0 -1
  257. package/dist/components/toc/default.d.ts.map +0 -1
  258. package/dist/components/toc/index.d.ts.map +0 -1
  259. package/dist/contexts/i18n.d.ts.map +0 -1
  260. package/dist/contexts/tree.d.ts.map +0 -1
  261. package/dist/i18n.d.ts.map +0 -1
  262. package/dist/og.d.ts.map +0 -1
  263. package/dist/utils/use-copy-button.d.ts.map +0 -1
  264. package/dist/utils/use-footer-items.d.ts.map +0 -1
  265. 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 { Tabs as Primitive } from '@base-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 { Tabs as Tabs$1 } from "@base-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.List;
15
- export const TabsTrigger = Primitive.Tab;
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.Root, { 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 = Tabs$1.List;
17
+ const TabsTrigger = Tabs$1.Tab;
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(Tabs$1.Root, {
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.Panel, { 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(Tabs$1.Panel, {
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":["Primitive","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 { Tabs as Primitive } from '@base-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.Root> {\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 onValueChange?: (value: string) => void;\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.List;\n\nexport const TabsTrigger = Primitive.Tab;\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.Root\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.Root>\n );\n}\n\nexport function TabsContent({ value, ...props }: ComponentProps<typeof Primitive.Panel>) {\n const { valueToIdMap } = useTabContext();\n\n if (props.id) {\n valueToIdMap.set(value, props.id);\n }\n\n return (\n <Primitive.Panel value={value} {...props}>\n {props.children}\n </Primitive.Panel>\n );\n}\n"],"mappings":";;;;;;;;AAgBA,MAAM,4BAAY,IAAI,KAAkC;AAqBxD,MAAM,cAAc,cAEV,KAAK;AAEf,SAAS,gBAAgB;CACvB,MAAM,MAAM,IAAI,YAAY;AAC5B,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,yCAAyC;AACnE,QAAO;;AAGT,MAAa,WAAWA,OAAU;AAElC,MAAa,cAAcA,OAAU;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,CAACC,SAAO,OAAO,aAAa,SAAS,CAC9C,KAAI,OAAO,MAAM;AACf,YAASA,QAAM;AACf,WAAQ,SAAS,gBAAgB;AACjC;;IAGH,CAAC,UAAU,aAAa,CAAC;AAE5B,QACE,oBAACD,OAAU;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,SAAiD;CACvF,MAAM,EAAE,iBAAiB,eAAe;AAExC,KAAI,MAAM,GACR,cAAa,IAAI,OAAO,MAAM,GAAG;AAGnC,QACE,oBAACA,OAAU;EAAa;EAAO,GAAI;YAChC,MAAM;GACS"}
@@ -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_runtime64 from "react/jsx-runtime";
3
+ import * as react12 from "react";
4
+ import { ComponentProps, ReactNode } from "react";
5
+
6
+ //#region src/layouts/docs/client.d.ts
7
+ declare const LayoutContext: react12.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_runtime64.JSX.Element;
17
+ declare function LayoutHeader(props: ComponentProps<'header'>): react_jsx_runtime64.JSX.Element;
18
+ declare function LayoutBody({
19
+ className,
20
+ style,
21
+ children,
22
+ ...props
23
+ }: ComponentProps<'div'>): react_jsx_runtime64.JSX.Element;
24
+ declare function LayoutTabs({
25
+ options,
26
+ ...props
27
+ }: ComponentProps<'div'> & {
28
+ options: SidebarTab[];
29
+ }): react_jsx_runtime64.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;AAMf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,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,OAAA,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 { isTabActive } from '../../components/sidebar/tabs/dropdown.js';
8
- import Link from 'fumadocs-core/link';
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 { isTabActive } from '@/components/sidebar/tabs/dropdown';\nimport Link from 'fumadocs-core/link';\nimport type { SidebarTab } from '@/components/sidebar/tabs';\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,59 @@
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 { SidebarPageTreeComponents } from "../../components/sidebar/page-tree.js";
2
+ import { GetSidebarTabsOptions } from "../../components/sidebar/tabs/index.js";
3
+ import { SidebarTabWithProps } from "../../components/sidebar/tabs/dropdown.js";
4
+ import { Sidebar } from "./sidebar.js";
5
+ import { BaseLayoutProps } from "../shared/index.js";
6
+ import * as react_jsx_runtime68 from "react/jsx-runtime";
7
+ import { ComponentProps, HTMLAttributes, ReactNode } from "react";
8
+ import * as PageTree from "fumadocs-core/page-tree";
9
+
10
+ //#region src/layouts/docs/index.d.ts
11
+ interface DocsLayoutProps extends BaseLayoutProps {
12
+ tree: PageTree.Root;
13
+ sidebar?: SidebarOptions;
14
+ tabMode?: 'top' | 'auto';
15
+ /**
16
+ * Props for the `div` container
17
+ */
18
+ containerProps?: HTMLAttributes<HTMLDivElement>;
16
19
  }
17
20
  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
+ enabled?: boolean;
22
+ component?: ReactNode;
23
+ components?: Partial<SidebarPageTreeComponents>;
24
+ /**
25
+ * Root Toggle options
26
+ */
27
+ tabs?: SidebarTabWithProps[] | GetSidebarTabsOptions | false;
28
+ banner?: ReactNode;
29
+ footer?: ReactNode;
30
+ /**
31
+ * Support collapsing the sidebar on desktop mode
32
+ *
33
+ * @defaultValue true
34
+ */
35
+ collapsible?: boolean;
33
36
  }
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 {};
37
+ declare function DocsLayout({
38
+ nav: {
39
+ transparentMode,
40
+ ...nav
41
+ },
42
+ sidebar: {
43
+ tabs: sidebarTabs,
44
+ enabled: sidebarEnabled,
45
+ defaultOpenLevel,
46
+ prefetch,
47
+ ...sidebarProps
48
+ },
49
+ searchToggle,
50
+ themeSwitch,
51
+ tabMode,
52
+ i18n,
53
+ children,
54
+ tree,
55
+ ...props
56
+ }: DocsLayoutProps): react_jsx_runtime68.JSX.Element;
57
+ //#endregion
58
+ export { DocsLayout, DocsLayoutProps };
36
59
  //# 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,OAAA,CAAA,EAAA,KAAA,GAAgB,MAAA;EACzB;;;EASW,cAAA,CAAA,EAAA,cAAA,CAAe,cAAf,CAAA;;UAGT,cAAA,SAEN,cAfoD,CAAA,OAAA,CAAA,EAgBpD,IAhBoD,CAgB/C,cAhB+C,CAAA,OAgBzB,OAhByB,CAAA,EAAA,kBAAA,GAAA,UAAA,CAAA,CAAA;EAa9C,OAAA,CAAA,EAAA,OACR;EAE6B,SAAA,CAAA,EAEjB,SAFiB;EAAtB,UAAA,CAAA,EAGM,OAHN,CAGc,yBAHd,CAAA;EAEK;;;EAML,IAAA,CAAA,EAAA,mBAAA,EAAA,GAAwB,qBAAxB,GAAA,KAAA;EAAwB,MAAA,CAAA,EAEtB,SAFsB;EAEtB,MAAA,CAAA,EACA,SADA;EACA;;;;AAUX;EACS,WAAA,CAAA,EAAA,OAAA;;AAGI,iBAJG,UAAA,CAIH;EAAA,GAAA,EAAA;IAAA,eAAA;IAAA,GAAA;EAAA,CAAA;EAAA,OAAA,EAAA;IAAA,IAAA,EADH,WACG;IAAA,OAAA,EAAA,cAAA;IAAA,gBAAA;IAAA,QAAA;IAAA,GAAA;EAAA,CAAA;EAAA,YAAA;EAAA,WAAA;EAAA,OAAA;EAAA,IAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAYV,eAZU,CAAA,EAYK,mBAAA,CAAA,GAAA,CAAA,OAZL"}