fumadocs-ui 16.4.1 → 16.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/css/preset.css +2 -4
  2. package/dist/_virtual/rolldown_runtime.js +36 -0
  3. package/dist/components/accordion.d.ts +24 -7
  4. package/dist/components/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion.js +65 -38
  6. package/dist/components/accordion.js.map +1 -0
  7. package/dist/components/banner.d.ts +33 -22
  8. package/dist/components/banner.d.ts.map +1 -1
  9. package/dist/components/banner.js +63 -47
  10. package/dist/components/banner.js.map +1 -0
  11. package/dist/components/callout.d.ts +41 -17
  12. package/dist/components/callout.d.ts.map +1 -1
  13. package/dist/components/callout.js +57 -28
  14. package/dist/components/callout.js.map +1 -0
  15. package/dist/components/card.d.ts +19 -9
  16. package/dist/components/card.d.ts.map +1 -1
  17. package/dist/components/card.js +39 -8
  18. package/dist/components/card.js.map +1 -0
  19. package/dist/components/codeblock.d.ts +61 -40
  20. package/dist/components/codeblock.d.ts.map +1 -1
  21. package/dist/components/codeblock.js +116 -58
  22. package/dist/components/codeblock.js.map +1 -0
  23. package/dist/components/dialog/search-algolia.d.ts +37 -23
  24. package/dist/components/dialog/search-algolia.d.ts.map +1 -1
  25. package/dist/components/dialog/search-algolia.js +64 -31
  26. package/dist/components/dialog/search-algolia.js.map +1 -0
  27. package/dist/components/dialog/search-default.d.ts +42 -27
  28. package/dist/components/dialog/search-default.d.ts.map +1 -1
  29. package/dist/components/dialog/search-default.js +64 -38
  30. package/dist/components/dialog/search-default.js.map +1 -0
  31. package/dist/components/dialog/search-orama.d.ts +41 -25
  32. package/dist/components/dialog/search-orama.d.ts.map +1 -1
  33. package/dist/components/dialog/search-orama.js +68 -35
  34. package/dist/components/dialog/search-orama.js.map +1 -0
  35. package/dist/components/dialog/search.d.ts +103 -64
  36. package/dist/components/dialog/search.d.ts.map +1 -1
  37. package/dist/components/dialog/search.js +264 -185
  38. package/dist/components/dialog/search.js.map +1 -0
  39. package/dist/components/dynamic-codeblock.d.ts +30 -19
  40. package/dist/components/dynamic-codeblock.d.ts.map +1 -1
  41. package/dist/components/dynamic-codeblock.js +60 -27
  42. package/dist/components/dynamic-codeblock.js.map +1 -0
  43. package/dist/components/files.d.ts +32 -16
  44. package/dist/components/files.d.ts.map +1 -1
  45. package/dist/components/files.js +40 -14
  46. package/dist/components/files.js.map +1 -0
  47. package/dist/components/github-info.d.ts +18 -7
  48. package/dist/components/github-info.d.ts.map +1 -1
  49. package/dist/components/github-info.js +63 -48
  50. package/dist/components/github-info.js.map +1 -0
  51. package/dist/components/heading.d.ts +11 -4
  52. package/dist/components/heading.d.ts.map +1 -1
  53. package/dist/components/heading.js +28 -8
  54. package/dist/components/heading.js.map +1 -0
  55. package/dist/components/image-zoom-CtfZieBH.css +80 -0
  56. package/dist/components/image-zoom-CtfZieBH.css.map +1 -0
  57. package/dist/components/image-zoom.d.ts +23 -14
  58. package/dist/components/image-zoom.d.ts.map +1 -1
  59. package/dist/components/image-zoom.js +32 -19
  60. package/dist/components/image-zoom.js.map +1 -0
  61. package/dist/components/image-zoom2.js +1 -0
  62. package/dist/components/inline-toc.d.ts +14 -6
  63. package/dist/components/inline-toc.d.ts.map +1 -1
  64. package/dist/components/inline-toc.js +28 -8
  65. package/dist/components/inline-toc.js.map +1 -0
  66. package/dist/components/sidebar/base.d.ts +102 -65
  67. package/dist/components/sidebar/base.d.ts.map +1 -1
  68. package/dist/components/sidebar/base.js +256 -180
  69. package/dist/components/sidebar/base.js.map +1 -0
  70. package/dist/components/sidebar/link-item.d.ts +23 -10
  71. package/dist/components/sidebar/link-item.d.ts.map +1 -1
  72. package/dist/components/sidebar/link-item.js +32 -12
  73. package/dist/components/sidebar/link-item.js.map +1 -0
  74. package/dist/components/sidebar/page-tree.d.ts +28 -17
  75. package/dist/components/sidebar/page-tree.d.ts.map +1 -1
  76. package/dist/components/sidebar/page-tree.js +57 -33
  77. package/dist/components/sidebar/page-tree.js.map +1 -0
  78. package/dist/components/sidebar/tabs/dropdown.d.ts +18 -9
  79. package/dist/components/sidebar/tabs/dropdown.d.ts.map +1 -1
  80. package/dist/components/sidebar/tabs/dropdown.js +75 -31
  81. package/dist/components/sidebar/tabs/dropdown.js.map +1 -0
  82. package/dist/components/sidebar/tabs/index.d.ts +24 -18
  83. package/dist/components/sidebar/tabs/index.d.ts.map +1 -1
  84. package/dist/components/sidebar/tabs/index.js +45 -45
  85. package/dist/components/sidebar/tabs/index.js.map +1 -0
  86. package/dist/components/steps.d.ts +16 -7
  87. package/dist/components/steps.d.ts.map +1 -1
  88. package/dist/components/steps.js +17 -5
  89. package/dist/components/steps.js.map +1 -0
  90. package/dist/components/tabs.d.ts +49 -28
  91. package/dist/components/tabs.d.ts.map +1 -1
  92. package/dist/components/tabs.js +88 -51
  93. package/dist/components/tabs.js.map +1 -0
  94. package/dist/components/toc/clerk.d.ts +1 -2
  95. package/dist/components/toc/clerk.js +12 -1
  96. package/dist/components/toc/clerk.js.map +1 -0
  97. package/dist/components/toc/default.d.ts +1 -2
  98. package/dist/components/toc/default.js +12 -1
  99. package/dist/components/toc/default.js.map +1 -0
  100. package/dist/components/toc/index.d.ts +1 -2
  101. package/dist/components/toc/index.js +12 -1
  102. package/dist/components/toc/index.js.map +1 -0
  103. package/dist/components/type-table.d.ts +36 -29
  104. package/dist/components/type-table.d.ts.map +1 -1
  105. package/dist/components/type-table.js +106 -25
  106. package/dist/components/type-table.js.map +1 -0
  107. package/dist/components/ui/accordion.d.ts +31 -7
  108. package/dist/components/ui/accordion.d.ts.map +1 -1
  109. package/dist/components/ui/accordion.js +40 -14
  110. package/dist/components/ui/accordion.js.map +1 -0
  111. package/dist/components/ui/button.d.ts +12 -7
  112. package/dist/components/ui/button.d.ts.map +1 -1
  113. package/dist/components/ui/button.js +21 -18
  114. package/dist/components/ui/button.js.map +1 -0
  115. package/dist/components/ui/collapsible.d.ts +12 -8
  116. package/dist/components/ui/collapsible.d.ts.map +1 -1
  117. package/dist/components/ui/collapsible.js +21 -11
  118. package/dist/components/ui/collapsible.js.map +1 -0
  119. package/dist/components/ui/navigation-menu.d.ts +8 -5
  120. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  121. package/dist/components/ui/navigation-menu.js +36 -9
  122. package/dist/components/ui/navigation-menu.js.map +1 -0
  123. package/dist/components/ui/popover.d.ts +6 -3
  124. package/dist/components/ui/popover.d.ts.map +1 -1
  125. package/dist/components/ui/popover.js +19 -6
  126. package/dist/components/ui/popover.js.map +1 -0
  127. package/dist/components/ui/scroll-area.d.ts +7 -4
  128. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  129. package/dist/components/ui/scroll-area.js +33 -7
  130. package/dist/components/ui/scroll-area.js.map +1 -0
  131. package/dist/components/ui/tabs.d.ts +37 -19
  132. package/dist/components/ui/tabs.d.ts.map +1 -1
  133. package/dist/components/ui/tabs.js +75 -73
  134. package/dist/components/ui/tabs.js.map +1 -0
  135. package/dist/contexts/i18n.d.ts +1 -2
  136. package/dist/contexts/i18n.js +12 -1
  137. package/dist/contexts/i18n.js.map +1 -0
  138. package/dist/contexts/search.d.ts +7 -1
  139. package/dist/contexts/search.d.ts.map +1 -1
  140. package/dist/contexts/search.js +12 -1
  141. package/dist/contexts/search.js.map +1 -0
  142. package/dist/contexts/tree.d.ts +1 -2
  143. package/dist/contexts/tree.js +12 -1
  144. package/dist/contexts/tree.js.map +1 -0
  145. package/dist/i18n.d.ts +1 -2
  146. package/dist/i18n.js +3 -1
  147. package/dist/layouts/docs/client.d.ts +30 -13
  148. package/dist/layouts/docs/client.d.ts.map +1 -1
  149. package/dist/layouts/docs/client.js +61 -34
  150. package/dist/layouts/docs/client.js.map +1 -0
  151. package/dist/layouts/docs/index.d.ts +57 -33
  152. package/dist/layouts/docs/index.d.ts.map +1 -1
  153. package/dist/layouts/docs/index.js +178 -68
  154. package/dist/layouts/docs/index.js.map +1 -0
  155. package/dist/layouts/docs/page/client.d.ts +43 -21
  156. package/dist/layouts/docs/page/client.d.ts.map +1 -1
  157. package/dist/layouts/docs/page/client.js +213 -105
  158. package/dist/layouts/docs/page/client.js.map +1 -0
  159. package/dist/layouts/docs/page/index.d.ts +82 -46
  160. package/dist/layouts/docs/page/index.d.ts.map +1 -1
  161. package/dist/layouts/docs/page/index.js +98 -45
  162. package/dist/layouts/docs/page/index.js.map +1 -0
  163. package/dist/layouts/docs/sidebar.d.ts +57 -16
  164. package/dist/layouts/docs/sidebar.d.ts.map +1 -1
  165. package/dist/layouts/docs/sidebar.js +135 -82
  166. package/dist/layouts/docs/sidebar.js.map +1 -0
  167. package/dist/layouts/home/client.d.ts +18 -5
  168. package/dist/layouts/home/client.d.ts.map +1 -1
  169. package/dist/layouts/home/client.js +252 -103
  170. package/dist/layouts/home/client.js.map +1 -0
  171. package/dist/layouts/home/index.d.ts +15 -10
  172. package/dist/layouts/home/index.d.ts.map +1 -1
  173. package/dist/layouts/home/index.js +24 -7
  174. package/dist/layouts/home/index.js.map +1 -0
  175. package/dist/layouts/home/navbar.d.ts +13 -6
  176. package/dist/layouts/home/navbar.d.ts.map +1 -1
  177. package/dist/layouts/home/navbar.js +34 -12
  178. package/dist/layouts/home/navbar.js.map +1 -0
  179. package/dist/layouts/notebook/client.d.ts +44 -20
  180. package/dist/layouts/notebook/client.d.ts.map +1 -1
  181. package/dist/layouts/notebook/client.js +148 -93
  182. package/dist/layouts/notebook/client.js.map +1 -0
  183. package/dist/layouts/notebook/index.d.ts +34 -30
  184. package/dist/layouts/notebook/index.d.ts.map +1 -1
  185. package/dist/layouts/notebook/index.js +216 -90
  186. package/dist/layouts/notebook/index.js.map +1 -0
  187. package/dist/layouts/notebook/page/client.d.ts +43 -21
  188. package/dist/layouts/notebook/page/client.d.ts.map +1 -1
  189. package/dist/layouts/notebook/page/client.js +213 -105
  190. package/dist/layouts/notebook/page/client.js.map +1 -0
  191. package/dist/layouts/notebook/page/index.d.ts +82 -46
  192. package/dist/layouts/notebook/page/index.d.ts.map +1 -1
  193. package/dist/layouts/notebook/page/index.js +98 -45
  194. package/dist/layouts/notebook/page/index.js.map +1 -0
  195. package/dist/layouts/notebook/sidebar.d.ts +62 -20
  196. package/dist/layouts/notebook/sidebar.d.ts.map +1 -1
  197. package/dist/layouts/notebook/sidebar.js +130 -88
  198. package/dist/layouts/notebook/sidebar.js.map +1 -0
  199. package/dist/layouts/shared/index.d.ts +62 -50
  200. package/dist/layouts/shared/index.d.ts.map +1 -1
  201. package/dist/layouts/shared/index.js +36 -20
  202. package/dist/layouts/shared/index.js.map +1 -0
  203. package/dist/layouts/shared/language-toggle.d.ts +9 -4
  204. package/dist/layouts/shared/language-toggle.d.ts.map +1 -1
  205. package/dist/layouts/shared/language-toggle.js +44 -21
  206. package/dist/layouts/shared/language-toggle.js.map +1 -0
  207. package/dist/layouts/shared/search-toggle.d.ts +20 -8
  208. package/dist/layouts/shared/search-toggle.d.ts.map +1 -1
  209. package/dist/layouts/shared/search-toggle.js +53 -24
  210. package/dist/layouts/shared/search-toggle.js.map +1 -0
  211. package/dist/layouts/shared/theme-toggle.d.ts +13 -4
  212. package/dist/layouts/shared/theme-toggle.d.ts.map +1 -1
  213. package/dist/layouts/shared/theme-toggle.js +58 -34
  214. package/dist/layouts/shared/theme-toggle.js.map +1 -0
  215. package/dist/mdx.d.ts +34 -29
  216. package/dist/mdx.d.ts.map +1 -1
  217. package/dist/mdx.js +68 -34
  218. package/dist/mdx.js.map +1 -0
  219. package/dist/mdx.server.d.ts +9 -5
  220. package/dist/mdx.server.d.ts.map +1 -1
  221. package/dist/mdx.server.js +21 -13
  222. package/dist/mdx.server.js.map +1 -0
  223. package/dist/og.d.ts +1 -2
  224. package/dist/og.js +3 -1
  225. package/dist/page.d.ts +30 -20
  226. package/dist/page.d.ts.map +1 -1
  227. package/dist/page.js +34 -18
  228. package/dist/page.js.map +1 -0
  229. package/dist/provider/base.d.ts +43 -33
  230. package/dist/provider/base.d.ts.map +1 -1
  231. package/dist/provider/base.js +37 -17
  232. package/dist/provider/base.js.map +1 -0
  233. package/dist/provider/next.d.ts +20 -12
  234. package/dist/provider/next.d.ts.map +1 -1
  235. package/dist/provider/next.js +19 -5
  236. package/dist/provider/next.js.map +1 -0
  237. package/dist/provider/react-router.d.ts +20 -12
  238. package/dist/provider/react-router.d.ts.map +1 -1
  239. package/dist/provider/react-router.js +19 -5
  240. package/dist/provider/react-router.js.map +1 -0
  241. package/dist/provider/tanstack.d.ts +20 -12
  242. package/dist/provider/tanstack.d.ts.map +1 -1
  243. package/dist/provider/tanstack.js +19 -5
  244. package/dist/provider/tanstack.js.map +1 -0
  245. package/dist/provider/waku.d.ts +20 -12
  246. package/dist/provider/waku.d.ts.map +1 -1
  247. package/dist/provider/waku.js +19 -5
  248. package/dist/provider/waku.js.map +1 -0
  249. package/dist/style.css +11 -13
  250. package/dist/utils/use-copy-button.d.ts +1 -2
  251. package/dist/utils/use-copy-button.js +3 -1
  252. package/dist/utils/use-footer-items.d.ts +1 -2
  253. package/dist/utils/use-footer-items.js +3 -1
  254. package/dist/utils/use-is-scroll-top.d.ts +1 -2
  255. package/dist/utils/use-is-scroll-top.js +3 -1
  256. package/package.json +51 -52
  257. package/dist/components/toc/clerk.d.ts.map +0 -1
  258. package/dist/components/toc/default.d.ts.map +0 -1
  259. package/dist/components/toc/index.d.ts.map +0 -1
  260. package/dist/contexts/i18n.d.ts.map +0 -1
  261. package/dist/contexts/tree.d.ts.map +0 -1
  262. package/dist/i18n.d.ts.map +0 -1
  263. package/dist/og.d.ts.map +0 -1
  264. package/dist/utils/use-copy-button.d.ts.map +0 -1
  265. package/dist/utils/use-footer-items.d.ts.map +0 -1
  266. package/dist/utils/use-is-scroll-top.d.ts.map +0 -1
@@ -1,92 +1,218 @@
1
- import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useMemo, } from 'react';
3
- import { renderTitleNav, resolveLinkItems, } from '../../layouts/shared/index.js';
4
- import { Sidebar, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarLinkItem, SidebarPageTree, SidebarTrigger, SidebarViewport, } from './sidebar.js';
5
- import { TreeContextProvider } from '../../contexts/tree.js';
6
- import { cn } from '@fumadocs/ui/cn';
7
- import { buttonVariants } from '../../components/ui/button.js';
8
- import { Languages, Sidebar as SidebarIcon, X } from '@fumadocs/ui/icons';
9
- import { LanguageToggle } from '../../layouts/shared/language-toggle.js';
10
- import { ThemeToggle } from '../../layouts/shared/theme-toggle.js';
11
- import { LayoutBody, LayoutContextProvider, LayoutHeader, LayoutHeaderTabs, NavbarLinkItem, } from '../../layouts/notebook/client.js';
12
- import { LargeSearchToggle, SearchToggle, } from '../../layouts/shared/search-toggle.js';
13
- import { LinkItem } from '@fumadocs/ui/link-item';
14
- import { getSidebarTabs, } from '../../components/sidebar/tabs/index.js';
15
- import { SidebarTabsDropdown, } from '../../components/sidebar/tabs/dropdown.js';
16
- export function DocsLayout(props) {
17
- const { tabMode = 'sidebar', nav = {}, sidebar: { tabs: tabOptions, defaultOpenLevel, prefetch, ...sidebarProps } = {}, i18n = false, themeSwitch = {}, tree, } = props;
18
- const navMode = nav.mode ?? 'auto';
19
- const links = resolveLinkItems(props);
20
- const tabs = useMemo(() => {
21
- if (Array.isArray(tabOptions)) {
22
- return tabOptions;
23
- }
24
- if (typeof tabOptions === 'object') {
25
- return getSidebarTabs(tree, tabOptions);
26
- }
27
- if (tabOptions !== false) {
28
- return getSidebarTabs(tree);
29
- }
30
- return [];
31
- }, [tabOptions, tree]);
32
- function sidebar() {
33
- const { banner, footer, components, collapsible = true, ...rest } = sidebarProps;
34
- const iconLinks = links.filter((item) => item.type === 'icon');
35
- const Header = typeof banner === 'function'
36
- ? banner
37
- : ({ className, ...props }) => (_jsxs("div", { className: cn('flex flex-col gap-3 p-4 pb-2 empty:hidden', className), ...props, children: [props.children, banner] }));
38
- const Footer = typeof footer === 'function'
39
- ? footer
40
- : ({ className, ...props }) => (_jsxs("div", { className: cn('hidden flex-row text-fd-muted-foreground items-center border-t p-4 pt-2', iconLinks.length > 0 && 'max-lg:flex', className), ...props, children: [props.children, footer] }));
41
- const viewport = (_jsxs(SidebarViewport, { children: [links
42
- .filter((item) => item.type !== 'icon')
43
- .map((item, i, arr) => (_jsx(SidebarLinkItem, { item: item, className: cn('lg:hidden', i === arr.length - 1 && 'mb-4') }, i))), _jsx(SidebarPageTree, { ...components })] }));
44
- return (_jsxs(_Fragment, { children: [_jsxs(SidebarContent, { ...rest, children: [_jsxs(Header, { children: [navMode === 'auto' && (_jsxs("div", { className: "flex justify-between", children: [renderTitleNav(nav, {
45
- className: 'inline-flex items-center gap-2.5 font-medium',
46
- }), collapsible && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
47
- color: 'ghost',
48
- size: 'icon-sm',
49
- className: 'mt-px mb-auto text-fd-muted-foreground',
50
- })), children: _jsx(SidebarIcon, {}) }))] })), nav.children, tabs.length > 0 && (_jsx(SidebarTabsDropdown, { options: tabs, className: cn(tabMode === 'navbar' && 'lg:hidden') }))] }), viewport, _jsx(Footer, { children: iconLinks.map((item, i) => (_jsx(LinkItem, { item: item, className: cn(buttonVariants({
51
- size: 'icon-sm',
52
- color: 'ghost',
53
- className: 'lg:hidden',
54
- })), "aria-label": item.label, children: item.icon }, i))) })] }), _jsxs(SidebarDrawer, { ...rest, children: [_jsxs(Header, { children: [_jsx(SidebarTrigger, { className: cn(buttonVariants({
55
- size: 'icon-sm',
56
- color: 'ghost',
57
- className: 'ms-auto text-fd-muted-foreground',
58
- })), children: _jsx(X, {}) }), tabs.length > 0 && _jsx(SidebarTabsDropdown, { options: tabs })] }), viewport, _jsxs(Footer, { className: cn('hidden flex-row items-center justify-end', (i18n || themeSwitch.enabled !== false) && 'flex', iconLinks.length > 0 && 'max-lg:flex'), children: [iconLinks.map((item, i) => (_jsx(LinkItem, { item: item, className: cn(buttonVariants({
59
- size: 'icon-sm',
60
- color: 'ghost',
61
- }), 'text-fd-muted-foreground lg:hidden', i === iconLinks.length - 1 && 'me-auto'), "aria-label": item.label, children: item.icon }, i))), i18n && (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-4.5 text-fd-muted-foreground" }) })), themeSwitch.enabled !== false &&
62
- (themeSwitch.component ?? (_jsx(ThemeToggle, { mode: themeSwitch.mode ?? 'light-dark-system' })))] })] })] }));
63
- }
64
- return (_jsx(TreeContextProvider, { tree: tree, children: _jsx(LayoutContextProvider, { navMode: nav.mode ?? 'auto', tabMode: tabMode, navTransparentMode: nav.transparentMode, children: _jsx(Sidebar, { defaultOpenLevel: defaultOpenLevel, prefetch: prefetch, children: _jsxs(LayoutBody, { ...props.containerProps, children: [sidebar(), _jsx(DocsNavbar, { ...props, links: links, tabs: tabs }), props.children] }) }) }) }));
1
+ import { buttonVariants } from "../../components/ui/button.js";
2
+ import { tree_exports } from "../../contexts/tree.js";
3
+ import { SidebarTabsDropdown } from "../../components/sidebar/tabs/dropdown.js";
4
+ import { LayoutBody, LayoutContextProvider, LayoutHeader, LayoutHeaderTabs, NavbarLinkItem } from "./client.js";
5
+ import { LargeSearchToggle, SearchToggle } from "../shared/search-toggle.js";
6
+ import { renderTitleNav, resolveLinkItems } from "../shared/index.js";
7
+ import { LanguageToggle } from "../shared/language-toggle.js";
8
+ import { ThemeToggle } from "../shared/theme-toggle.js";
9
+ import { getSidebarTabs } from "../../components/sidebar/tabs/index.js";
10
+ import { Sidebar as Sidebar$1, SidebarCollapseTrigger, SidebarContent, SidebarDrawer, SidebarLinkItem, SidebarPageTree, SidebarTrigger, SidebarViewport } from "./sidebar.js";
11
+ import { cn } from "@fumadocs/ui/cn";
12
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
+ import { Languages, Sidebar, X } from "lucide-react";
14
+ import { useMemo } from "react";
15
+ import { LinkItem } from "@fumadocs/ui/link-item";
16
+
17
+ //#region src/layouts/notebook/index.tsx
18
+ function DocsLayout(props) {
19
+ const { tabMode = "sidebar", nav = {}, sidebar: { tabs: tabOptions, defaultOpenLevel, prefetch, ...sidebarProps } = {}, i18n = false, themeSwitch = {}, tree } = props;
20
+ const navMode = nav.mode ?? "auto";
21
+ const links = resolveLinkItems(props);
22
+ const tabs = useMemo(() => {
23
+ if (Array.isArray(tabOptions)) return tabOptions;
24
+ if (typeof tabOptions === "object") return getSidebarTabs(tree, tabOptions);
25
+ if (tabOptions !== false) return getSidebarTabs(tree);
26
+ return [];
27
+ }, [tabOptions, tree]);
28
+ function sidebar() {
29
+ const { banner, footer, components, collapsible = true, ...rest } = sidebarProps;
30
+ const iconLinks = links.filter((item) => item.type === "icon");
31
+ const Header = typeof banner === "function" ? banner : ({ className, ...props$1 }) => /* @__PURE__ */ jsxs("div", {
32
+ className: cn("flex flex-col gap-3 p-4 pb-2 empty:hidden", className),
33
+ ...props$1,
34
+ children: [props$1.children, banner]
35
+ });
36
+ const Footer = typeof footer === "function" ? footer : ({ className, ...props$1 }) => /* @__PURE__ */ jsxs("div", {
37
+ className: cn("hidden flex-row text-fd-muted-foreground items-center border-t p-4 pt-2", iconLinks.length > 0 && "max-lg:flex", className),
38
+ ...props$1,
39
+ children: [props$1.children, footer]
40
+ });
41
+ const viewport = /* @__PURE__ */ jsxs(SidebarViewport, { children: [links.filter((item) => item.type !== "icon").map((item, i, arr) => /* @__PURE__ */ jsx(SidebarLinkItem, {
42
+ item,
43
+ className: cn("lg:hidden", i === arr.length - 1 && "mb-4")
44
+ }, i)), /* @__PURE__ */ jsx(SidebarPageTree, { ...components })] });
45
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(SidebarContent, {
46
+ ...rest,
47
+ children: [
48
+ /* @__PURE__ */ jsxs(Header, { children: [navMode === "auto" && /* @__PURE__ */ jsxs("div", {
49
+ className: "flex justify-between",
50
+ children: [renderTitleNav(nav, { className: "inline-flex items-center gap-2.5 font-medium" }), collapsible && /* @__PURE__ */ jsx(SidebarCollapseTrigger, {
51
+ className: cn(buttonVariants({
52
+ color: "ghost",
53
+ size: "icon-sm",
54
+ className: "mt-px mb-auto text-fd-muted-foreground"
55
+ })),
56
+ children: /* @__PURE__ */ jsx(Sidebar, {})
57
+ })]
58
+ }), tabs.length > 0 && /* @__PURE__ */ jsx(SidebarTabsDropdown, {
59
+ options: tabs,
60
+ className: cn(tabMode === "navbar" && "lg:hidden")
61
+ })] }),
62
+ viewport,
63
+ /* @__PURE__ */ jsx(Footer, { children: iconLinks.map((item, i) => /* @__PURE__ */ jsx(LinkItem, {
64
+ item,
65
+ className: cn(buttonVariants({
66
+ size: "icon-sm",
67
+ color: "ghost",
68
+ className: "lg:hidden"
69
+ })),
70
+ "aria-label": item.label,
71
+ children: item.icon
72
+ }, i)) })
73
+ ]
74
+ }), /* @__PURE__ */ jsxs(SidebarDrawer, {
75
+ ...rest,
76
+ children: [
77
+ /* @__PURE__ */ jsxs(Header, { children: [/* @__PURE__ */ jsx(SidebarTrigger, {
78
+ className: cn(buttonVariants({
79
+ size: "icon-sm",
80
+ color: "ghost",
81
+ className: "ms-auto text-fd-muted-foreground"
82
+ })),
83
+ children: /* @__PURE__ */ jsx(X, {})
84
+ }), tabs.length > 0 && /* @__PURE__ */ jsx(SidebarTabsDropdown, { options: tabs })] }),
85
+ viewport,
86
+ /* @__PURE__ */ jsxs(Footer, {
87
+ className: cn("hidden flex-row items-center justify-end", (i18n || themeSwitch.enabled !== false) && "flex", iconLinks.length > 0 && "max-lg:flex"),
88
+ children: [
89
+ iconLinks.map((item, i) => /* @__PURE__ */ jsx(LinkItem, {
90
+ item,
91
+ className: cn(buttonVariants({
92
+ size: "icon-sm",
93
+ color: "ghost"
94
+ }), "text-fd-muted-foreground lg:hidden", i === iconLinks.length - 1 && "me-auto"),
95
+ "aria-label": item.label,
96
+ children: item.icon
97
+ }, i)),
98
+ i18n && /* @__PURE__ */ jsx(LanguageToggle, { children: /* @__PURE__ */ jsx(Languages, { className: "size-4.5 text-fd-muted-foreground" }) }),
99
+ themeSwitch.enabled !== false && (themeSwitch.component ?? /* @__PURE__ */ jsx(ThemeToggle, { mode: themeSwitch.mode ?? "light-dark-system" }))
100
+ ]
101
+ })
102
+ ]
103
+ })] });
104
+ }
105
+ return /* @__PURE__ */ jsx(tree_exports.TreeContextProvider, {
106
+ tree,
107
+ children: /* @__PURE__ */ jsx(LayoutContextProvider, {
108
+ navMode: nav.mode ?? "auto",
109
+ tabMode,
110
+ navTransparentMode: nav.transparentMode,
111
+ children: /* @__PURE__ */ jsx(Sidebar$1, {
112
+ defaultOpenLevel,
113
+ prefetch,
114
+ children: /* @__PURE__ */ jsxs(LayoutBody, {
115
+ ...props.containerProps,
116
+ children: [
117
+ sidebar(),
118
+ /* @__PURE__ */ jsx(DocsNavbar, {
119
+ ...props,
120
+ links,
121
+ tabs
122
+ }),
123
+ props.children
124
+ ]
125
+ })
126
+ })
127
+ })
128
+ });
65
129
  }
66
- function DocsNavbar({ links, tabs, tabMode = 'sidebar', sidebar: { collapsible: sidebarCollapsible = true } = {}, searchToggle = {}, themeSwitch = {}, nav = {}, i18n, }) {
67
- const navMode = nav.mode ?? 'auto';
68
- const showLayoutTabs = tabMode === 'navbar' && tabs.length > 0;
69
- return (_jsxs(LayoutHeader, { id: "nd-subnav", className: cn('sticky [grid-area:header] flex flex-col top-(--fd-docs-row-1) z-10 backdrop-blur-sm transition-colors data-[transparent=false]:bg-fd-background/80 layout:[--fd-header-height:--spacing(14)]', showLayoutTabs && 'lg:layout:[--fd-header-height:--spacing(24)]'), children: [_jsxs("div", { "data-header-body": "", className: "flex border-b px-4 gap-2 h-14 md:px-6", children: [_jsxs("div", { className: cn('items-center', navMode === 'top' && 'flex flex-1', navMode === 'auto' &&
70
- 'hidden has-data-[collapsed=true]:md:flex max-md:flex'), children: [sidebarCollapsible && navMode === 'auto' && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
71
- color: 'ghost',
72
- size: 'icon-sm',
73
- }), 'text-fd-muted-foreground data-[collapsed=false]:hidden max-md:hidden'), children: _jsx(SidebarIcon, {}) })), renderTitleNav(nav, {
74
- className: cn('inline-flex items-center gap-2.5 font-semibold', navMode === 'auto' && 'md:hidden'),
75
- })] }), searchToggle.enabled !== false &&
76
- (searchToggle.components?.lg ? (_jsx("div", { className: cn('w-full my-auto max-md:hidden', navMode === 'top' ? 'rounded-xl max-w-sm' : 'max-w-[240px]'), children: searchToggle.components.lg })) : (_jsx(LargeSearchToggle, { hideIfDisabled: true, className: cn('w-full my-auto max-md:hidden', navMode === 'top'
77
- ? 'rounded-xl max-w-sm ps-2.5'
78
- : 'max-w-[240px]') }))), _jsxs("div", { className: "flex flex-1 items-center justify-end md:gap-2", children: [_jsx("div", { className: "flex items-center gap-6 empty:hidden max-lg:hidden", children: links
79
- .filter((item) => item.type !== 'icon')
80
- .map((item, i) => (_jsx(NavbarLinkItem, { item: item }, i))) }), nav.children, links
81
- .filter((item) => item.type === 'icon')
82
- .map((item, i) => (_jsx(LinkItem, { item: item, className: cn(buttonVariants({ size: 'icon-sm', color: 'ghost' }), 'text-fd-muted-foreground max-lg:hidden'), "aria-label": item.label, children: item.icon }, i))), _jsxs("div", { className: "flex items-center md:hidden", children: [searchToggle.enabled !== false &&
83
- (searchToggle.components?.sm ?? (_jsx(SearchToggle, { hideIfDisabled: true, className: "p-2" }))), _jsx(SidebarTrigger, { className: cn(buttonVariants({
84
- color: 'ghost',
85
- size: 'icon-sm',
86
- className: 'p-2 -me-1.5',
87
- })), children: _jsx(SidebarIcon, {}) })] }), _jsxs("div", { className: "flex items-center gap-2 max-md:hidden", children: [i18n && (_jsx(LanguageToggle, { children: _jsx(Languages, { className: "size-4.5 text-fd-muted-foreground" }) })), themeSwitch.enabled !== false &&
88
- (themeSwitch.component ?? (_jsx(ThemeToggle, { mode: themeSwitch.mode ?? 'light-dark-system' }))), sidebarCollapsible && navMode === 'top' && (_jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
89
- color: 'secondary',
90
- size: 'icon-sm',
91
- }), 'text-fd-muted-foreground rounded-full -me-1.5'), children: _jsx(SidebarIcon, {}) }))] })] })] }), showLayoutTabs && (_jsx(LayoutHeaderTabs, { "data-header-tabs": "", className: "overflow-x-auto border-b px-6 h-10 max-lg:hidden", options: tabs }))] }));
130
+ function DocsNavbar({ links, tabs, tabMode = "sidebar", sidebar: { collapsible: sidebarCollapsible = true } = {}, searchToggle = {}, themeSwitch = {}, nav = {}, i18n }) {
131
+ const navMode = nav.mode ?? "auto";
132
+ const showLayoutTabs = tabMode === "navbar" && tabs.length > 0;
133
+ return /* @__PURE__ */ jsxs(LayoutHeader, {
134
+ id: "nd-subnav",
135
+ className: cn("sticky [grid-area:header] flex flex-col top-(--fd-docs-row-1) z-10 backdrop-blur-sm transition-colors data-[transparent=false]:bg-fd-background/80 layout:[--fd-header-height:--spacing(14)]", showLayoutTabs && "lg:layout:[--fd-header-height:--spacing(24)]"),
136
+ children: [/* @__PURE__ */ jsxs("div", {
137
+ "data-header-body": "",
138
+ className: "flex border-b px-4 gap-2 h-14 md:px-6",
139
+ children: [
140
+ /* @__PURE__ */ jsxs("div", {
141
+ className: cn("items-center", navMode === "top" && "flex flex-1", navMode === "auto" && "hidden has-data-[collapsed=true]:md:flex max-md:flex"),
142
+ children: [
143
+ sidebarCollapsible && navMode === "auto" && /* @__PURE__ */ jsx(SidebarCollapseTrigger, {
144
+ className: cn(buttonVariants({
145
+ color: "ghost",
146
+ size: "icon-sm"
147
+ }), "text-fd-muted-foreground data-[collapsed=false]:hidden max-md:hidden"),
148
+ children: /* @__PURE__ */ jsx(Sidebar, {})
149
+ }),
150
+ renderTitleNav(nav, { className: cn("inline-flex items-center gap-2.5 font-semibold", navMode === "auto" && "md:hidden") }),
151
+ nav.children
152
+ ]
153
+ }),
154
+ searchToggle.enabled !== false && (searchToggle.components?.lg ? /* @__PURE__ */ jsx("div", {
155
+ className: cn("w-full my-auto max-md:hidden", navMode === "top" ? "rounded-xl max-w-sm" : "max-w-[240px]"),
156
+ children: searchToggle.components.lg
157
+ }) : /* @__PURE__ */ jsx(LargeSearchToggle, {
158
+ hideIfDisabled: true,
159
+ className: cn("w-full my-auto max-md:hidden", navMode === "top" ? "rounded-xl max-w-sm ps-2.5" : "max-w-[240px]")
160
+ })),
161
+ /* @__PURE__ */ jsxs("div", {
162
+ className: "flex flex-1 items-center justify-end md:gap-2",
163
+ children: [
164
+ /* @__PURE__ */ jsx("div", {
165
+ className: "flex items-center gap-6 empty:hidden max-lg:hidden",
166
+ children: links.filter((item) => item.type !== "icon").map((item, i) => /* @__PURE__ */ jsx(NavbarLinkItem, { item }, i))
167
+ }),
168
+ links.filter((item) => item.type === "icon").map((item, i) => /* @__PURE__ */ jsx(LinkItem, {
169
+ item,
170
+ className: cn(buttonVariants({
171
+ size: "icon-sm",
172
+ color: "ghost"
173
+ }), "text-fd-muted-foreground max-lg:hidden"),
174
+ "aria-label": item.label,
175
+ children: item.icon
176
+ }, i)),
177
+ /* @__PURE__ */ jsxs("div", {
178
+ className: "flex items-center md:hidden",
179
+ children: [searchToggle.enabled !== false && (searchToggle.components?.sm ?? /* @__PURE__ */ jsx(SearchToggle, {
180
+ hideIfDisabled: true,
181
+ className: "p-2"
182
+ })), /* @__PURE__ */ jsx(SidebarTrigger, {
183
+ className: cn(buttonVariants({
184
+ color: "ghost",
185
+ size: "icon-sm",
186
+ className: "p-2 -me-1.5"
187
+ })),
188
+ children: /* @__PURE__ */ jsx(Sidebar, {})
189
+ })]
190
+ }),
191
+ /* @__PURE__ */ jsxs("div", {
192
+ className: "flex items-center gap-2 max-md:hidden",
193
+ children: [
194
+ i18n && /* @__PURE__ */ jsx(LanguageToggle, { children: /* @__PURE__ */ jsx(Languages, { className: "size-4.5 text-fd-muted-foreground" }) }),
195
+ themeSwitch.enabled !== false && (themeSwitch.component ?? /* @__PURE__ */ jsx(ThemeToggle, { mode: themeSwitch.mode ?? "light-dark-system" })),
196
+ sidebarCollapsible && navMode === "top" && /* @__PURE__ */ jsx(SidebarCollapseTrigger, {
197
+ className: cn(buttonVariants({
198
+ color: "secondary",
199
+ size: "icon-sm"
200
+ }), "text-fd-muted-foreground rounded-full -me-1.5"),
201
+ children: /* @__PURE__ */ jsx(Sidebar, {})
202
+ })
203
+ ]
204
+ })
205
+ ]
206
+ })
207
+ ]
208
+ }), showLayoutTabs && /* @__PURE__ */ jsx(LayoutHeaderTabs, {
209
+ "data-header-tabs": "",
210
+ className: "overflow-x-auto border-b px-6 h-10 max-lg:hidden",
211
+ options: tabs
212
+ })]
213
+ });
92
214
  }
215
+
216
+ //#endregion
217
+ export { DocsLayout };
218
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["props","SidebarIcon","TreeContextProvider","Sidebar"],"sources":["../../../src/layouts/notebook/index.tsx"],"sourcesContent":["import { type ComponentProps, type FC, type HTMLAttributes, type ReactNode, useMemo } from 'react';\nimport { type BaseLayoutProps, renderTitleNav, resolveLinkItems } from '@/layouts/shared';\nimport {\n Sidebar,\n SidebarCollapseTrigger,\n SidebarContent,\n SidebarDrawer,\n SidebarLinkItem,\n SidebarPageTree,\n SidebarTrigger,\n SidebarViewport,\n} from './sidebar';\nimport { TreeContextProvider } from '@/contexts/tree';\nimport { cn } from '@fumadocs/ui/cn';\nimport { buttonVariants } from '@/components/ui/button';\nimport { Languages, Sidebar as SidebarIcon, X } from 'lucide-react';\nimport { LanguageToggle } from '@/layouts/shared/language-toggle';\nimport { ThemeToggle } from '@/layouts/shared/theme-toggle';\nimport type * as PageTree from 'fumadocs-core/page-tree';\nimport {\n LayoutBody,\n LayoutContextProvider,\n LayoutHeader,\n LayoutHeaderTabs,\n NavbarLinkItem,\n} from '@/layouts/notebook/client';\nimport { LargeSearchToggle, SearchToggle } from '@/layouts/shared/search-toggle';\nimport { LinkItem, type LinkItemType } from '@fumadocs/ui/link-item';\nimport type { SidebarPageTreeComponents } from '@/components/sidebar/page-tree';\nimport { getSidebarTabs, type GetSidebarTabsOptions } from '@/components/sidebar/tabs';\nimport { SidebarTabsDropdown, type SidebarTabWithProps } from '@/components/sidebar/tabs/dropdown';\n\nexport interface DocsLayoutProps extends BaseLayoutProps {\n tree: PageTree.Root;\n tabMode?: 'sidebar' | 'navbar';\n\n nav?: BaseLayoutProps['nav'] & {\n mode?: 'top' | 'auto';\n };\n\n sidebar?: SidebarOptions;\n\n containerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\ninterface SidebarOptions\n extends\n ComponentProps<'aside'>,\n Pick<ComponentProps<typeof Sidebar>, 'defaultOpenLevel' | 'prefetch'> {\n components?: Partial<SidebarPageTreeComponents>;\n\n /**\n * Root Toggle options\n */\n tabs?: SidebarTabWithProps[] | GetSidebarTabsOptions | false;\n\n banner?: ReactNode | FC<ComponentProps<'div'>>;\n footer?: ReactNode | FC<ComponentProps<'div'>>;\n\n /**\n * Support collapsing the sidebar on desktop mode\n *\n * @defaultValue true\n */\n collapsible?: boolean;\n}\n\nexport function DocsLayout(props: DocsLayoutProps) {\n const {\n tabMode = 'sidebar',\n nav = {},\n sidebar: { tabs: tabOptions, defaultOpenLevel, prefetch, ...sidebarProps } = {},\n i18n = false,\n themeSwitch = {},\n tree,\n } = props;\n\n const navMode = nav.mode ?? 'auto';\n const links = resolveLinkItems(props);\n const tabs = useMemo(() => {\n if (Array.isArray(tabOptions)) {\n return tabOptions;\n }\n\n if (typeof tabOptions === 'object') {\n return getSidebarTabs(tree, tabOptions);\n }\n\n if (tabOptions !== false) {\n return getSidebarTabs(tree);\n }\n\n return [];\n }, [tabOptions, tree]);\n\n function sidebar() {\n const { banner, footer, components, collapsible = true, ...rest } = sidebarProps;\n\n const iconLinks = links.filter((item) => item.type === 'icon');\n const Header =\n typeof banner === 'function'\n ? banner\n : ({ className, ...props }: ComponentProps<'div'>) => (\n <div className={cn('flex flex-col gap-3 p-4 pb-2 empty:hidden', className)} {...props}>\n {props.children}\n {banner}\n </div>\n );\n const Footer =\n typeof footer === 'function'\n ? footer\n : ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n className={cn(\n 'hidden flex-row text-fd-muted-foreground items-center border-t p-4 pt-2',\n iconLinks.length > 0 && 'max-lg:flex',\n className,\n )}\n {...props}\n >\n {props.children}\n {footer}\n </div>\n );\n const viewport = (\n <SidebarViewport>\n {links\n .filter((item) => item.type !== 'icon')\n .map((item, i, arr) => (\n <SidebarLinkItem\n key={i}\n item={item}\n className={cn('lg:hidden', i === arr.length - 1 && 'mb-4')}\n />\n ))}\n\n <SidebarPageTree {...components} />\n </SidebarViewport>\n );\n\n return (\n <>\n <SidebarContent {...rest}>\n <Header>\n {navMode === 'auto' && (\n <div className=\"flex justify-between\">\n {renderTitleNav(nav, {\n className: 'inline-flex items-center gap-2.5 font-medium',\n })}\n {collapsible && (\n <SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'mt-px mb-auto text-fd-muted-foreground',\n }),\n )}\n >\n <SidebarIcon />\n </SidebarCollapseTrigger>\n )}\n </div>\n )}\n {tabs.length > 0 && (\n <SidebarTabsDropdown\n options={tabs}\n className={cn(tabMode === 'navbar' && 'lg:hidden')}\n />\n )}\n </Header>\n {viewport}\n <Footer>\n {iconLinks.map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(\n buttonVariants({\n size: 'icon-sm',\n color: 'ghost',\n className: 'lg:hidden',\n }),\n )}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n </Footer>\n </SidebarContent>\n <SidebarDrawer {...rest}>\n <Header>\n <SidebarTrigger\n className={cn(\n buttonVariants({\n size: 'icon-sm',\n color: 'ghost',\n className: 'ms-auto text-fd-muted-foreground',\n }),\n )}\n >\n <X />\n </SidebarTrigger>\n {tabs.length > 0 && <SidebarTabsDropdown options={tabs} />}\n </Header>\n {viewport}\n <Footer\n className={cn(\n 'hidden flex-row items-center justify-end',\n (i18n || themeSwitch.enabled !== false) && 'flex',\n iconLinks.length > 0 && 'max-lg:flex',\n )}\n >\n {iconLinks.map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(\n buttonVariants({\n size: 'icon-sm',\n color: 'ghost',\n }),\n 'text-fd-muted-foreground lg:hidden',\n i === iconLinks.length - 1 && 'me-auto',\n )}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-4.5 text-fd-muted-foreground\" />\n </LanguageToggle>\n )}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? (\n <ThemeToggle mode={themeSwitch.mode ?? 'light-dark-system'} />\n ))}\n </Footer>\n </SidebarDrawer>\n </>\n );\n }\n\n return (\n <TreeContextProvider tree={tree}>\n <LayoutContextProvider\n navMode={nav.mode ?? 'auto'}\n tabMode={tabMode}\n navTransparentMode={nav.transparentMode}\n >\n <Sidebar defaultOpenLevel={defaultOpenLevel} prefetch={prefetch}>\n <LayoutBody {...props.containerProps}>\n {sidebar()}\n <DocsNavbar {...props} links={links} tabs={tabs} />\n {props.children}\n </LayoutBody>\n </Sidebar>\n </LayoutContextProvider>\n </TreeContextProvider>\n );\n}\n\nfunction DocsNavbar({\n links,\n tabs,\n tabMode = 'sidebar',\n sidebar: { collapsible: sidebarCollapsible = true } = {},\n searchToggle = {},\n themeSwitch = {},\n nav = {},\n i18n,\n}: DocsLayoutProps & {\n links: LinkItemType[];\n tabs: SidebarTabWithProps[];\n}) {\n const navMode = nav.mode ?? 'auto';\n const showLayoutTabs = tabMode === 'navbar' && tabs.length > 0;\n\n return (\n <LayoutHeader\n id=\"nd-subnav\"\n className={cn(\n 'sticky [grid-area:header] flex flex-col top-(--fd-docs-row-1) z-10 backdrop-blur-sm transition-colors data-[transparent=false]:bg-fd-background/80 layout:[--fd-header-height:--spacing(14)]',\n showLayoutTabs && 'lg:layout:[--fd-header-height:--spacing(24)]',\n )}\n >\n <div data-header-body=\"\" className=\"flex border-b px-4 gap-2 h-14 md:px-6\">\n <div\n className={cn(\n 'items-center',\n navMode === 'top' && 'flex flex-1',\n navMode === 'auto' && 'hidden has-data-[collapsed=true]:md:flex max-md:flex',\n )}\n >\n {sidebarCollapsible && navMode === 'auto' && (\n <SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n }),\n 'text-fd-muted-foreground data-[collapsed=false]:hidden max-md:hidden',\n )}\n >\n <SidebarIcon />\n </SidebarCollapseTrigger>\n )}\n {renderTitleNav(nav, {\n className: cn(\n 'inline-flex items-center gap-2.5 font-semibold',\n navMode === 'auto' && 'md:hidden',\n ),\n })}\n {nav.children}\n </div>\n {searchToggle.enabled !== false &&\n (searchToggle.components?.lg ? (\n <div\n className={cn(\n 'w-full my-auto max-md:hidden',\n navMode === 'top' ? 'rounded-xl max-w-sm' : 'max-w-[240px]',\n )}\n >\n {searchToggle.components.lg}\n </div>\n ) : (\n <LargeSearchToggle\n hideIfDisabled\n className={cn(\n 'w-full my-auto max-md:hidden',\n navMode === 'top' ? 'rounded-xl max-w-sm ps-2.5' : 'max-w-[240px]',\n )}\n />\n ))}\n <div className=\"flex flex-1 items-center justify-end md:gap-2\">\n <div className=\"flex items-center gap-6 empty:hidden max-lg:hidden\">\n {links\n .filter((item) => item.type !== 'icon')\n .map((item, i) => (\n <NavbarLinkItem key={i} item={item} />\n ))}\n </div>\n {links\n .filter((item) => item.type === 'icon')\n .map((item, i) => (\n <LinkItem\n key={i}\n item={item}\n className={cn(\n buttonVariants({ size: 'icon-sm', color: 'ghost' }),\n 'text-fd-muted-foreground max-lg:hidden',\n )}\n aria-label={item.label}\n >\n {item.icon}\n </LinkItem>\n ))}\n\n <div className=\"flex items-center md:hidden\">\n {searchToggle.enabled !== false &&\n (searchToggle.components?.sm ?? <SearchToggle hideIfDisabled className=\"p-2\" />)}\n <SidebarTrigger\n className={cn(\n buttonVariants({\n color: 'ghost',\n size: 'icon-sm',\n className: 'p-2 -me-1.5',\n }),\n )}\n >\n <SidebarIcon />\n </SidebarTrigger>\n </div>\n\n <div className=\"flex items-center gap-2 max-md:hidden\">\n {i18n && (\n <LanguageToggle>\n <Languages className=\"size-4.5 text-fd-muted-foreground\" />\n </LanguageToggle>\n )}\n {themeSwitch.enabled !== false &&\n (themeSwitch.component ?? (\n <ThemeToggle mode={themeSwitch.mode ?? 'light-dark-system'} />\n ))}\n {sidebarCollapsible && navMode === 'top' && (\n <SidebarCollapseTrigger\n className={cn(\n buttonVariants({\n color: 'secondary',\n size: 'icon-sm',\n }),\n 'text-fd-muted-foreground rounded-full -me-1.5',\n )}\n >\n <SidebarIcon />\n </SidebarCollapseTrigger>\n )}\n </div>\n </div>\n </div>\n {showLayoutTabs && (\n <LayoutHeaderTabs\n data-header-tabs=\"\"\n className=\"overflow-x-auto border-b px-6 h-10 max-lg:hidden\"\n options={tabs}\n />\n )}\n </LayoutHeader>\n );\n}\n"],"mappings":"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"}
@@ -1,24 +1,46 @@
1
- import { type ComponentProps } from 'react';
2
- import type * as PageTree from 'fumadocs-core/page-tree';
3
- import { type BreadcrumbOptions } from 'fumadocs-core/breadcrumb';
4
- export declare function PageTOCPopover({ className, children, ...rest }: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
5
- export declare function PageTOCPopoverTrigger({ className, ...props }: ComponentProps<'button'>): import("react/jsx-runtime").JSX.Element;
6
- export declare function PageTOCPopoverContent(props: ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
7
- export declare function PageLastUpdate({ date: value, ...props }: Omit<ComponentProps<'p'>, 'children'> & {
8
- date: Date;
9
- }): import("react/jsx-runtime").JSX.Element;
1
+ import * as react_jsx_runtime109 from "react/jsx-runtime";
2
+ import { ComponentProps } from "react";
3
+ import { BreadcrumbOptions } from "fumadocs-core/breadcrumb";
4
+ import * as PageTree from "fumadocs-core/page-tree";
5
+
6
+ //#region src/layouts/notebook/page/client.d.ts
7
+ declare function PageTOCPopover({
8
+ className,
9
+ children,
10
+ ...rest
11
+ }: ComponentProps<'div'>): react_jsx_runtime109.JSX.Element;
12
+ declare function PageTOCPopoverTrigger({
13
+ className,
14
+ ...props
15
+ }: ComponentProps<'button'>): react_jsx_runtime109.JSX.Element;
16
+ declare function PageTOCPopoverContent(props: ComponentProps<'div'>): react_jsx_runtime109.JSX.Element;
17
+ declare function PageLastUpdate({
18
+ date: value,
19
+ ...props
20
+ }: Omit<ComponentProps<'p'>, 'children'> & {
21
+ date: Date;
22
+ }): react_jsx_runtime109.JSX.Element;
10
23
  type Item = Pick<PageTree.Item, 'name' | 'description' | 'url'>;
11
- export interface FooterProps extends ComponentProps<'div'> {
12
- /**
13
- * Items including information for the next and previous page
14
- */
15
- items?: {
16
- previous?: Item;
17
- next?: Item;
18
- };
24
+ interface FooterProps extends ComponentProps<'div'> {
25
+ /**
26
+ * Items including information for the next and previous page
27
+ */
28
+ items?: {
29
+ previous?: Item;
30
+ next?: Item;
31
+ };
19
32
  }
20
- export declare function PageFooter({ items, ...props }: FooterProps): import("react/jsx-runtime").JSX.Element;
21
- export type BreadcrumbProps = BreadcrumbOptions & ComponentProps<'div'>;
22
- export declare function PageBreadcrumb({ includeRoot, includeSeparator, includePage, ...props }: BreadcrumbProps): import("react/jsx-runtime").JSX.Element | null;
23
- export {};
33
+ declare function PageFooter({
34
+ items,
35
+ ...props
36
+ }: FooterProps): react_jsx_runtime109.JSX.Element;
37
+ type BreadcrumbProps = BreadcrumbOptions & ComponentProps<'div'>;
38
+ declare function PageBreadcrumb({
39
+ includeRoot,
40
+ includeSeparator,
41
+ includePage,
42
+ ...props
43
+ }: BreadcrumbProps): react_jsx_runtime109.JSX.Element | null;
44
+ //#endregion
45
+ export { BreadcrumbProps, FooterProps, PageBreadcrumb, PageFooter, PageLastUpdate, PageTOCPopover, PageTOCPopoverContent, PageTOCPopoverTrigger };
24
46
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/layouts/notebook/page/client.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,cAAc,EASpB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,cAAc,CAAC,KAAK,CAAC,2CAqDvB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,QAAQ,CAAC,2CAqD1B;AA8DD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,2CAUjE;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EAAE,KAAK,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,2CAiBxD;AAED,KAAK,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC;AAChE,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,IAAI,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,CAAC;KACb,CAAC;CACH;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,WAAW,2CA8B1D;AA8BD,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAExE,wBAAgB,cAAc,CAAC,EAC7B,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,eAAe,kDA6CjB"}
1
+ {"version":3,"file":"client.d.ts","names":[],"sources":["../../../../src/layouts/notebook/page/client.tsx"],"sourcesContent":[],"mappings":";;;;;;iBAiCgB,cAAA;;;;GAAiD,wBAAqB,oBAAA,CAAA,GAAA,CAAA;iBAsDtE,qBAAA;;;GAA+C,2BAAwB,oBAAA,CAAA,GAAA,CAAA;iBA2GvE,qBAAA,QAA6B,wBAAqB,oBAAA,CAAA,GAAA,CAAA;AAjKlD,iBA6KA,cAAA,CA7Kc;EAAA,IAAA,EA8KtB,KA9KsB;EAAA,GAAA;CAAA,EAgL3B,IAhL2B,CAgLtB,cAhLsB,CAAA,GAAA,CAAA,EAAA,UAAA,CAAA,GAAA;EAAG,IAAA,EAgLkB,IAhLlB;CAAW,CAAA,EAgLa,oBAAA,CAAA,GAAA,CAAA,OAhLb;KAgMvC,IAAA,GAAO,IAhMqD,CAgMhD,QAAA,CAAS,IAhMuC,EAAA,MAAA,GAAA,aAAA,GAAA,KAAA,CAAA;AAAqB,UAiMrE,WAAA,SAAoB,cAjMiD,CAAA,KAAA,CAAA,CAAA;EAAA;AAsDtF;;EAA+D,KAAA,CAAA,EAAA;IAAwB,QAAA,CAAA,EAgJxE,IAhJwE;IAAA,IAAA,CAAA,EAiJ5E,IAjJ4E;EA2GvE,CAAA;AAYhB;AACQ,iBA6BQ,UAAA,CA7BR;EAAA,KAAA;EAAA,GAAA;AAAA,CAAA,EA6BwC,WA7BxC,CAAA,EA6BmD,oBAAA,CAAA,GAAA,CAAA,OA7BnD;AAEA,KAqFI,eAAA,GAAkB,iBArFtB,GAqF0C,cArF1C,CAAA,KAAA,CAAA;AAAL,iBAuFa,cAAA,CAvFb;EAAA,WAAA;EAAA,gBAAA;EAAA,WAAA;EAAA,GAAA;AAAA,CAAA,EA4FA,eA5FA,CAAA,EA4Fe,oBAAA,CAAA,GAAA,CAAA,OAAA,GA5Ff,IAAA"}