fumadocs-ui 15.0.10 → 15.0.12

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.
package/css/preset.css CHANGED
@@ -72,6 +72,12 @@
72
72
  }
73
73
  }
74
74
 
75
+ @property --radix-collapsible-content-height {
76
+ syntax: '<length>';
77
+ inherits: false;
78
+ initial-value: 0px;
79
+ }
80
+
75
81
  @utility container {
76
82
  margin-inline: auto;
77
83
  padding-inline: 1rem;
@@ -3,5 +3,5 @@ export declare function DynamicCodeBlock({ lang, code, options, }: {
3
3
  lang: string;
4
4
  code: string;
5
5
  options?: Omit<HighlightOptions, 'lang'>;
6
- }): import("react/jsx-runtime").JSX.Element;
6
+ }): import("react").ReactNode;
7
7
  //# sourceMappingURL=dynamic-codeblock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic-codeblock.d.ts","sourceRoot":"","sources":["../../src/components/dynamic-codeblock.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAe7D,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,OAAO,GACR,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC1C,2CAuBA"}
1
+ {"version":3,"file":"dynamic-codeblock.d.ts","sourceRoot":"","sources":["../../src/components/dynamic-codeblock.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAc7D,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,IAAI,EACJ,OAAO,GACR,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;CAC1C,6BAUA"}
@@ -1,8 +1,7 @@
1
1
  'use client';
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { CodeBlock, Pre } from '../components/codeblock.js';
4
- import { PrerenderScript, useShiki } from 'fumadocs-core/utils/use-shiki';
5
- import { useId } from 'react';
4
+ import { useShiki } from 'fumadocs-core/highlight/client';
6
5
  import { cn } from '../utils/cn.js';
7
6
  const components = {
8
7
  pre(props) {
@@ -10,16 +9,13 @@ const components = {
10
9
  },
11
10
  };
12
11
  export function DynamicCodeBlock({ lang, code, options, }) {
13
- const scriptKey = useId();
14
- const shikiOptions = {
12
+ return useShiki(code, {
15
13
  lang,
16
- scriptKey,
17
14
  ...options,
18
15
  components: {
19
16
  ...components,
20
17
  ...options?.components,
21
18
  },
22
- };
23
- const children = useShiki(code, shikiOptions);
24
- return (_jsxs(_Fragment, { children: [_jsx(PrerenderScript, { scriptKey: scriptKey, code: code, options: shikiOptions }), children] }));
19
+ withPrerenderScript: true,
20
+ });
25
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../../src/components/layout/nav.tsx"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAEL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,eAAwB,EACxB,QAAQ,GACT,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAsB5C;AAED,wBAAgB,MAAM,IAAI,cAAc,CAEvC;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,2CAevC"}
1
+ {"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../../src/components/layout/nav.tsx"],"names":[],"mappings":"AACA,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,eAAwB,EACxB,QAAQ,GACT,EAAE,gBAAgB,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAwB5C;AAED,wBAAgB,MAAM,IAAI,cAAc,CAEvC;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,2CAevC"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import Link from 'fumadocs-core/link';
4
- import { createContext, useContext, useEffect, useState, } from 'react';
4
+ import { createContext, useContext, useEffect, useMemo, useState, } from 'react';
5
5
  import { cn } from '../../utils/cn.js';
6
6
  import { useI18n } from '../../contexts/i18n.js';
7
7
  const NavContext = createContext({
@@ -21,7 +21,7 @@ export function NavProvider({ transparentMode = 'none', children, }) {
21
21
  window.removeEventListener('scroll', listener);
22
22
  };
23
23
  }, [transparentMode]);
24
- return (_jsx(NavContext.Provider, { value: { isTransparent: transparent }, children: children }));
24
+ return (_jsx(NavContext.Provider, { value: useMemo(() => ({ isTransparent: transparent }), [transparent]), children: children }));
25
25
  }
26
26
  export function useNav() {
27
27
  return useContext(NavContext);
@@ -1 +1 @@
1
- {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAIpE,QAAA,MAAM,WAAW,kIAA4B,CAAC;AAE9C,QAAA,MAAM,kBAAkB,4IAA0C,CAAC;AAEnE,QAAA,MAAM,kBAAkB,sMAgBtB,CAAC;AAKH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"collapsible.d.ts","sourceRoot":"","sources":["../../../src/components/ui/collapsible.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,oBAAoB,MAAM,6BAA6B,CAAC;AAIpE,QAAA,MAAM,WAAW,kIAA4B,CAAC;AAE9C,QAAA,MAAM,kBAAkB,4IAA0C,CAAC;AAEnE,QAAA,MAAM,kBAAkB,sMAwBtB,CAAC;AAKH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,11 +1,17 @@
1
+ 'use client';
1
2
  import { jsx as _jsx } from "react/jsx-runtime";
2
3
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
3
- import { forwardRef } from 'react';
4
+ import { forwardRef, useEffect, useState } from 'react';
4
5
  import { cn } from '../../utils/cn.js';
5
6
  const Collapsible = CollapsiblePrimitive.Root;
6
7
  const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
7
8
  const CollapsibleContent = forwardRef(({ children, ...props }, ref) => {
8
- return (_jsx(CollapsiblePrimitive.CollapsibleContent, { ref: ref, ...props, className: cn('overflow-hidden [--radix-collapsible-content-height:0px] data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down', props.className), children: children }));
9
+ const [mounted, setMounted] = useState(false);
10
+ useEffect(() => {
11
+ setMounted(true);
12
+ }, []);
13
+ return (_jsx(CollapsiblePrimitive.CollapsibleContent, { ref: ref, ...props, className: cn('overflow-hidden', mounted &&
14
+ 'data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down', props.className), children: children }));
9
15
  });
10
16
  CollapsibleContent.displayName =
11
17
  CollapsiblePrimitive.CollapsibleContent.displayName;
@@ -1,12 +1,13 @@
1
1
  import type { PageTree } from 'fumadocs-core/server';
2
2
  import { type ReactNode } from 'react';
3
+ type MakeRequired<O, K extends keyof O> = Omit<O, K> & Pick<Required<O>, K>;
3
4
  interface TreeContextType {
4
- root: PageTree.Root | PageTree.Folder;
5
+ root: MakeRequired<PageTree.Root | PageTree.Folder, '$id'>;
5
6
  }
6
7
  export declare function TreeContextProvider({ children, tree, }: {
7
8
  tree: PageTree.Root;
8
9
  children: ReactNode;
9
- }): ReactNode;
10
+ }): import("react/jsx-runtime").JSX.Element;
10
11
  export declare function useTreePath(): PageTree.Node[];
11
12
  export declare function useTreeContext(): TreeContextType;
12
13
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/contexts/tree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAA6B,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAG3E,UAAU,eAAe;IACvB,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;CACvC;AAKD,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,IAAI,GACL,EAAE;IACD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,GAAG,SAAS,CAeZ;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAE7C;AAED,wBAAgB,cAAc,IAAI,eAAe,CAMhD"}
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../../src/contexts/tree.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAGL,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAGf,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5E,UAAU,eAAe;IACvB,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC5D;AAKD,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,IAAI,GACL,EAAE;IACD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAmBA;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAE7C;AAED,wBAAgB,cAAc,IAAI,eAAe,CAMhD"}
@@ -1,16 +1,17 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { usePathname } from 'next/navigation';
4
- import { createContext, useContext, useMemo } from 'react';
4
+ import { createContext, useContext, useMemo, useRef, } from 'react';
5
5
  import { searchPath } from 'fumadocs-core/breadcrumb';
6
6
  const TreeContext = createContext(null);
7
7
  const PathContext = createContext([]);
8
8
  export function TreeContextProvider({ children, tree, }) {
9
+ const nextIdRef = useRef(0);
9
10
  const pathname = usePathname();
10
11
  const path = useMemo(() => searchPath(tree.children, pathname) ?? [], [pathname, tree]);
11
- const root = (path.findLast((item) => item.type === 'folder' && item.root) ??
12
- tree);
13
- return (_jsx(TreeContext.Provider, { value: useMemo(() => ({ root }), [root]), children: _jsx(PathContext.Provider, { value: path, children: children }) }));
12
+ const root = path.findLast((item) => item.type === 'folder' && item.root) ?? tree;
13
+ root.$id ?? (root.$id = String(nextIdRef.current++));
14
+ return (_jsx(TreeContext.Provider, { value: useMemo(() => ({ root: root }), [root]), children: _jsx(PathContext.Provider, { value: path, children: children }) }));
14
15
  }
15
16
  export function useTreePath() {
16
17
  return useContext(PathContext);
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAEL,KAAK,YAAY,EAEjB,mBAAmB,EACnB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAGzB,UAAU,iBAAiB;IACzB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAY,EACZ,MAAM,EACN,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAkCnB;AAED,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAEhD,OAAO,EACL,KAAK,YAAY,EAEjB,mBAAmB,EACnB,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAGzB,UAAU,iBAAiB;IACzB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAE/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAY,EACZ,MAAM,EACN,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAuCnB;AAED,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,CAAC"}
package/dist/i18n.js CHANGED
@@ -1,32 +1,34 @@
1
1
  'use client';
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useMemo } from 'react';
3
4
  import { useRouter, usePathname } from 'next/navigation';
4
- import { useI18n, I18nContext, defaultTranslations, } from './contexts/i18n.js';
5
+ import { I18nContext, defaultTranslations, } from './contexts/i18n.js';
5
6
  import { useEffectEvent } from 'fumadocs-core/utils/use-effect-event';
6
7
  export function I18nProvider({ locales = [], locale, ...props }) {
7
- const context = useI18n();
8
8
  const router = useRouter();
9
9
  const pathname = usePathname();
10
- const onChange = useEffectEvent((value) => {
11
- const segments = pathname.split('/').filter((v) => v.length > 0);
12
- // If locale prefix hidden
13
- if (segments[0] !== locale) {
14
- segments.unshift(value);
15
- }
16
- else {
17
- segments[0] = value;
18
- }
19
- router.push(`/${segments.join('/')}`);
20
- router.refresh();
21
- });
22
- return (_jsx(I18nContext.Provider, { value: {
10
+ const onChange = props.onChange ??
11
+ // eslint-disable-next-line react-hooks/rules-of-hooks -- always controlled
12
+ useEffectEvent((value) => {
13
+ const segments = pathname.split('/').filter((v) => v.length > 0);
14
+ // If locale prefix hidden
15
+ if (segments[0] !== locale) {
16
+ segments.unshift(value);
17
+ }
18
+ else {
19
+ segments[0] = value;
20
+ }
21
+ router.push(`/${segments.join('/')}`);
22
+ router.refresh();
23
+ });
24
+ return (_jsx(I18nContext.Provider, { value: useMemo(() => ({
23
25
  locale,
24
26
  locales,
25
27
  text: {
26
- ...context.text,
28
+ ...defaultTranslations,
27
29
  ...props.translations,
28
30
  },
29
- onChange: props.onChange ?? onChange,
30
- }, children: props.children }));
31
+ onChange,
32
+ }), [locale, locales, onChange, props.translations]), children: props.children }));
31
33
  }
32
34
  export { defaultTranslations };
@@ -41,5 +41,5 @@ export declare function SidebarCollapseTrigger(props: ButtonHTMLAttributes<HTMLB
41
41
  */
42
42
  export declare function SidebarPageTree(props: {
43
43
  components?: Partial<SidebarComponents>;
44
- }): ReactNode[];
44
+ }): import("react/jsx-runtime").JSX.Element;
45
45
  //# sourceMappingURL=sidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EAEnB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC/D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA2BD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,2CAqDrD;AAED,wBAAgB,OAAO,CAAC,EACtB,gBAAoB,EACpB,QAAe,EACf,KAAK,EACL,GAAG,KAAK,EACT,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAAE,2CAwC3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CASlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CAYlE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,2CAarD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,2CAkB3E;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,2CAsBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAqBlE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CAmCjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAmBlE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CAiB/C;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,eAuDA"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/layouts/docs/sidebar.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,oBAAoB,EAGzB,KAAK,cAAc,EAEnB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AACf,OAAa,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAU1D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,KAAK,EACV,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,WAAW,CAAC;IAC/D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA2BD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,2CAqDrD;AAED,wBAAgB,OAAO,CAAC,EACtB,gBAAoB,EACpB,QAAe,EACf,KAAK,EACL,GAAG,KAAK,EACT,EAAE,YAAY,GAAG;IAAE,KAAK,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;CAAE,2CAwC3D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CASlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,cAAc,CAAC,2CAYlE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,2CAarD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,oBAAoB,CAAC,2CAkB3E;AAED,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,SAAS,GAAG;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB,2CAsBA;AAED,wBAAgB,aAAa,CAAC,EAC5B,WAAmB,EACnB,GAAG,KAAK,EACT,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,2CAgBA;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAqBlE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,2CAmCjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,uBAAuB,2CAmBlE;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,2CAiB/C;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzC,2CAuDA"}
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { ChevronDown, ExternalLink, SidebarIcon } from 'lucide-react';
4
4
  import * as Base from 'fumadocs-core/sidebar';
5
5
  import { usePathname } from 'next/navigation';
6
- import { createContext, useCallback, useContext, useMemo, useRef, useState, } from 'react';
6
+ import { createContext, Fragment, useCallback, useContext, useMemo, useRef, useState, } from 'react';
7
7
  import Link from 'fumadocs-core/link';
8
8
  import { useOnChange } from 'fumadocs-core/utils/use-on-change';
9
9
  import { cn } from '../../utils/cn.js';
@@ -162,25 +162,24 @@ export function SidebarPageTree(props) {
162
162
  const { Separator, Item, Folder } = props.components ?? {};
163
163
  function renderSidebarList(items, level) {
164
164
  return items.map((item, i) => {
165
- const id = `${item.type}_${i}`;
166
165
  if (item.type === 'separator') {
167
166
  if (Separator)
168
- return _jsx(Separator, { item: item }, id);
169
- return (_jsxs(SidebarSeparator, { className: cn(i !== 0 && 'mt-8'), children: [item.icon, item.name] }, id));
167
+ return _jsx(Separator, { item: item }, i);
168
+ return (_jsxs(SidebarSeparator, { className: cn(i !== 0 && 'mt-8'), children: [item.icon, item.name] }, i));
170
169
  }
171
170
  if (item.type === 'folder') {
172
171
  const children = renderSidebarList(item.children, level + 1);
173
172
  if (Folder)
174
- return (_jsx(Folder, { item: item, level: level, children: children }, id));
175
- return (_jsx(PageTreeFolder, { item: item, children: children }, id));
173
+ return (_jsx(Folder, { item: item, level: level, children: children }, i));
174
+ return (_jsx(PageTreeFolder, { item: item, children: children }, i));
176
175
  }
177
176
  if (Item)
178
177
  return _jsx(Item, { item: item }, item.url);
179
178
  return (_jsx(SidebarItem, { href: item.url, external: item.external, icon: item.icon, children: item.name }, item.url));
180
179
  });
181
180
  }
182
- return renderSidebarList(root.children, 1);
183
- }, [root, props.components]);
181
+ return (_jsx(Fragment, { children: renderSidebarList(root.children, 1) }, root.$id));
182
+ }, [props.components, root.$id]);
184
183
  }
185
184
  function PageTreeFolder({ item, ...props }) {
186
185
  const { defaultOpenLevel, level } = useInternalContext();
@@ -8,7 +8,7 @@ export interface DocsLayoutProps extends BaseLayoutProps {
8
8
  sidebar?: Partial<SidebarOptions>;
9
9
  containerProps?: HTMLAttributes<HTMLDivElement>;
10
10
  }
11
- export declare function DocsLayout({ nav: { enabled: navEnabled, component: navReplace, transparentMode, ...nav }, sidebar: { enabled: sidebarEnabled, collapsible, component: sidebarReplace, tabs: tabOptions, banner: sidebarBanner, footer: sidebarFooter, components: sidebarComponents, hideSearch: sidebarHideSearch, ...sidebar }, i18n, ...props }: DocsLayoutProps): ReactNode;
11
+ export declare function DocsLayout({ nav: { enabled: navEnabled, component: navReplace, transparentMode, ...nav }, sidebar: { enabled: sidebarEnabled, collapsible, component: sidebarReplace, tabs: tabOptions, banner: sidebarBanner, footer: sidebarFooter, components: sidebarComponents, hideSearch: sidebarHideSearch, ...sidebar }, i18n, children, ...props }: DocsLayoutProps): ReactNode;
12
12
  export { getSidebarTabsFromOptions, type TabOptions } from './docs/shared.js';
13
13
  export { type LinkItemType };
14
14
  //# sourceMappingURL=docs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/layouts/docs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAe5D,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAa1D,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAElC,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EAAE,EACH,OAAO,EAAE,UAAiB,EAC1B,SAAS,EAAE,UAAU,EACrB,eAAe,EACf,GAAG,GAAG,EACF,EACN,OAAO,EAAE,EACP,OAAO,EAAE,cAAqB,EAC9B,WAAkB,EAClB,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CA8H7B;AA2CD,OAAO,EAAE,yBAAyB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/layouts/docs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAe5D,OAAO,EAAE,KAAK,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAElE,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,UAAU,CAAC;AAa1D,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IAEpB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAElC,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EAAE,EACH,OAAO,EAAE,UAAiB,EAC1B,SAAS,EAAE,UAAU,EACrB,eAAe,EACf,GAAG,GAAG,EACF,EACN,OAAO,EAAE,EACP,OAAO,EAAE,cAAqB,EAC9B,WAAkB,EAClB,SAAS,EAAE,cAAc,EACzB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,SAAS,CA8H7B;AA2CD,OAAO,EAAE,yBAAyB,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC"}
@@ -16,7 +16,7 @@ import { ThemeToggle } from '../components/layout/theme-toggle.js';
16
16
  import { LargeSearchToggle, SearchToggle, } from '../components/layout/search-toggle.js';
17
17
  import { checkPageTree, getSidebarTabsFromOptions, layoutVariables, SidebarLinkItem, } from '../layouts/docs/shared.js';
18
18
  import { StylesProvider } from '../contexts/layout.js';
19
- export function DocsLayout({ nav: { enabled: navEnabled = true, component: navReplace, transparentMode, ...nav } = {}, sidebar: { enabled: sidebarEnabled = true, collapsible = true, component: sidebarReplace, tabs: tabOptions, banner: sidebarBanner, footer: sidebarFooter, components: sidebarComponents, hideSearch: sidebarHideSearch, ...sidebar } = {}, i18n = false, ...props }) {
19
+ export function DocsLayout({ nav: { enabled: navEnabled = true, component: navReplace, transparentMode, ...nav } = {}, sidebar: { enabled: sidebarEnabled = true, collapsible = true, component: sidebarReplace, tabs: tabOptions, banner: sidebarBanner, footer: sidebarFooter, components: sidebarComponents, hideSearch: sidebarHideSearch, ...sidebar } = {}, i18n = false, children, ...props }) {
20
20
  checkPageTree(props.tree);
21
21
  const links = getLinks(props.links ?? [], props.githubUrl);
22
22
  const Aside = collapsible ? CollapsibleSidebar : Sidebar;
@@ -42,7 +42,7 @@ export function DocsLayout({ nav: { enabled: navEnabled = true, component: navRe
42
42
  .map((item, i) => (_jsx(SidebarLinkItem, { item: item }, i))) }), _jsx(SidebarPageTree, { components: sidebarComponents })] }), _jsxs(SidebarFooter, { children: [_jsx(SidebarFooterItems, { links: links, i18n: i18n, disableThemeSwitch: props.disableThemeSwitch ?? false }), sidebarFooter] })] }), {
43
43
  ...sidebar,
44
44
  tabs,
45
- }), _jsx(StylesProvider, { ...pageStyles, children: props.children })] })] }) }));
45
+ }), _jsx(StylesProvider, { ...pageStyles, children: children })] })] }) }));
46
46
  }
47
47
  function SidebarFooterItems({ i18n, disableThemeSwitch, links, }) {
48
48
  const iconItems = links.filter((v) => v.type === 'icon');
@@ -1 +1 @@
1
- {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,kBAAkB,CAAC;AA4BlE,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAWrD,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE/B,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IAEF,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IAEjE,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAmB,EACnB,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,EAAO,EACrC,OAAO,EAAE,EACP,WAAW,EAAE,kBAAyB,EACtC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,GAAG,KAAK,EACT,EAAE,eAAe,2CAsHjB"}
1
+ {"version":3,"file":"notebook.d.ts","sourceRoot":"","sources":["../../src/layouts/notebook.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,kBAAkB,CAAC;AA4BlE,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAWrD,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAE/B,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG;QAC7B,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IAEF,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC,CAAC;IAEjE,cAAc,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAmB,EACnB,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,GAAG,EAAO,EACrC,OAAO,EAAE,EACP,WAAW,EAAE,kBAAyB,EACtC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAC7B,GAAG,OAAO,EACN,EACN,IAAY,EACZ,GAAG,KAAK,EACT,EAAE,eAAe,2CA4HjB"}
@@ -25,7 +25,7 @@ export function DocsLayout({ tabMode = 'sidebar', nav: { transparentMode, ...nav
25
25
  const tabs = getSidebarTabsFromOptions(tabOptions, props.tree) ?? [];
26
26
  const variables = cn('[--fd-nav-height:calc(var(--spacing)*14)] [--fd-tocnav-height:36px] md:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px]', tabs.length > 0 &&
27
27
  tabMode === 'navbar' &&
28
- 'lg:[--fd-nav-height:calc(var(--spacing)*26)]');
28
+ 'lg:[--fd-nav-height:calc(var(--spacing)*24)]');
29
29
  const pageStyles = {
30
30
  tocNav: cn('xl:hidden'),
31
31
  toc: cn('max-xl:hidden'),
@@ -34,7 +34,9 @@ export function DocsLayout({ tabMode = 'sidebar', nav: { transparentMode, ...nav
34
34
  return (_jsx(TreeContextProvider, { tree: props.tree, children: _jsx(NavProvider, { transparentMode: transparentMode, children: _jsxs("main", { id: "nd-docs-layout", ...props.containerProps, className: cn('flex w-full flex-1 flex-row pe-(--fd-layout-offset)', variables, props.containerProps?.className), style: {
35
35
  ...layoutVariables,
36
36
  ...props.containerProps?.style,
37
- }, children: [_jsxs(Aside, { ...sidebar, className: cn('md:ps-(--fd-layout-offset)', navMode === 'top' ? 'bg-transparent' : 'md:[--fd-nav-height:0px]', sidebar.className), children: [_jsxs(SidebarHeader, { children: [navMode === 'auto' && (_jsxs("div", { className: "flex flex-row justify-between -mt-0.5 max-md:hidden", children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex items-center gap-2.5 font-medium", children: nav.title }), _jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
37
+ }, children: [_jsxs(Aside, { ...sidebar, className: cn('md:ps-(--fd-layout-offset)', navMode === 'top' ? 'bg-transparent' : 'md:[--fd-nav-height:0px]', sidebar.className), inner: {
38
+ className: cn(navMode === 'top' ? 'md:pt-2.5' : 'md:pt-3.5', tabMode === 'navbar' && 'md:pt-0'),
39
+ }, children: [_jsxs(SidebarHeader, { children: [navMode === 'auto' && (_jsxs("div", { className: "flex flex-row justify-between max-md:hidden", children: [_jsx(Link, { href: nav.url ?? '/', className: "inline-flex items-center gap-2.5 font-medium", children: nav.title }), _jsx(SidebarCollapseTrigger, { className: cn(buttonVariants({
38
40
  color: 'ghost',
39
41
  size: 'icon-sm',
40
42
  }), 'text-fd-muted-foreground mb-auto') })] })), nav.children, sidebarBanner, tabMode === 'sidebar' && tabs.length > 0 ? (_jsx(RootToggle, { options: tabs, className: "-mx-2" })) : null] }), _jsxs(SidebarViewport, { children: [tabMode === 'navbar' &&
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,UAAU,aACR,SAAQ,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,UAAU,CAAC;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7E;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,CAAC,GAAG;QAChE;;;;WAIG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAEF,QAAQ,EAAE,SAAS,CAAC;CACrB;AAOD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,GAAG,EACH,KAAK,EAAE,EAAE,OAAc,EAAE,GAAG,KAAK,EAAO,EACxC,MAAM,GACP,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA4BxC;AAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,aAAa,EACb,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAEnF,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,UAAU,aACR,SAAQ,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,UAAU,CAAC;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7E;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAEhC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,OAAO,aAAa,CAAC,CAAC,GAAG;QAChE;;;;WAIG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAEF,QAAQ,EAAE,SAAS,CAAC;CACrB;AAOD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,GAAW,EACX,KAAK,EAAE,EAAE,OAAc,EAAE,GAAG,KAAK,EAAO,EACxC,MAAM,GACP,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA4BxC;AAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,cAAc,EACd,aAAa,EACb,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC"}
package/dist/provider.js CHANGED
@@ -6,13 +6,13 @@ import { DirectionProvider } from '@radix-ui/react-direction';
6
6
  import { SidebarProvider } from './contexts/sidebar.js';
7
7
  import { SearchProvider } from './contexts/search.js';
8
8
  const DefaultSearchDialog = dynamic(() => import('./components/dialog/search-default.js'), { ssr: false });
9
- export function RootProvider({ children, dir, theme: { enabled = true, ...theme } = {}, search, }) {
9
+ export function RootProvider({ children, dir = 'ltr', theme: { enabled = true, ...theme } = {}, search, }) {
10
10
  let body = children;
11
11
  if (search?.enabled !== false)
12
12
  body = (_jsx(SearchProvider, { SearchDialog: DefaultSearchDialog, ...search, children: body }));
13
13
  if (enabled)
14
14
  body = (_jsx(ThemeProvider, { attribute: "class", defaultTheme: "system", enableSystem: true, disableTransitionOnChange: true, ...theme, children: body }));
15
- return (_jsx(DirectionProvider, { dir: dir ?? 'ltr', children: _jsx(SidebarProvider, { children: body }) }));
15
+ return (_jsx(DirectionProvider, { dir: dir, children: _jsx(SidebarProvider, { children: body }) }));
16
16
  }
17
17
  export { useI18n, I18nLabel } from './contexts/i18n.js';
18
18
  export { SearchProvider, SearchOnly, useSearchContext, } from './contexts/search.js';
package/dist/style.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.0.6 | MIT License | https://tailwindcss.com */
1
+ /*! tailwindcss v4.0.7 | MIT License | https://tailwindcss.com */
2
2
  @layer theme, base, components, utilities;
3
3
  @layer theme {
4
4
  :root, :host {
@@ -1026,7 +1026,7 @@
1026
1026
  }
1027
1027
  :where(a:not([data-card])):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1028
1028
  color: var(--tw-prose-links);
1029
- transition: text-decoration .2s;
1029
+ transition: opacity .2s;
1030
1030
  font-weight: 500;
1031
1031
  text-decoration: underline;
1032
1032
  text-underline-offset: 3.5px;
@@ -1034,7 +1034,7 @@
1034
1034
  text-decoration-thickness: 1.5px;
1035
1035
  }
1036
1036
  :where(a:not([data-card]):hover):not(:where([class~="not-prose"],[class~="not-prose"] *)) {
1037
- text-decoration-thickness: 3px;
1037
+ opacity: 80%;
1038
1038
  }
1039
1039
  --tw-prose-body: color-mix(in oklab, var(--color-fd-foreground) 90%, transparent);
1040
1040
  --tw-prose-headings: var(--color-fd-foreground);
@@ -1087,9 +1087,6 @@
1087
1087
  border-bottom-color: var(--tw-prose-th-borders);
1088
1088
  }
1089
1089
  }
1090
- .-mt-0\.5 {
1091
- margin-top: calc(var(--spacing) * -0.5);
1092
- }
1093
1090
  .mt-\(--fd-nav-height\) {
1094
1091
  margin-top: var(--fd-nav-height);
1095
1092
  }
@@ -1815,9 +1812,6 @@
1815
1812
  .\[--fd-tocnav-height\:36px\] {
1816
1813
  --fd-tocnav-height: 36px;
1817
1814
  }
1818
- .\[--radix-collapsible-content-height\:0px\] {
1819
- --radix-collapsible-content-height: 0px;
1820
- }
1821
1815
  .select-none {
1822
1816
  -webkit-user-select: none;
1823
1817
  user-select: none;
@@ -2229,6 +2223,21 @@
2229
2223
  padding-inline-start: var(--fd-layout-offset);
2230
2224
  }
2231
2225
  }
2226
+ .md\:pt-0 {
2227
+ @media (width >= 48rem) {
2228
+ padding-top: calc(var(--spacing) * 0);
2229
+ }
2230
+ }
2231
+ .md\:pt-2\.5 {
2232
+ @media (width >= 48rem) {
2233
+ padding-top: calc(var(--spacing) * 2.5);
2234
+ }
2235
+ }
2236
+ .md\:pt-3\.5 {
2237
+ @media (width >= 48rem) {
2238
+ padding-top: calc(var(--spacing) * 3.5);
2239
+ }
2240
+ }
2232
2241
  .md\:pt-4 {
2233
2242
  @media (width >= 48rem) {
2234
2243
  padding-top: calc(var(--spacing) * 4);
@@ -2307,9 +2316,9 @@
2307
2316
  border-width: 1px;
2308
2317
  }
2309
2318
  }
2310
- .lg\:\[--fd-nav-height\:calc\(var\(--spacing\)\*26\)\] {
2319
+ .lg\:\[--fd-nav-height\:calc\(var\(--spacing\)\*24\)\] {
2311
2320
  @media (width >= 64rem) {
2312
- --fd-nav-height: calc(var(--spacing) * 26);
2321
+ --fd-nav-height: calc(var(--spacing) * 24);
2313
2322
  }
2314
2323
  }
2315
2324
  .lg\:\[--fd-sidebar-width\:286px\] {
@@ -2543,6 +2552,11 @@
2543
2552
  margin-bottom: 0;
2544
2553
  }
2545
2554
  }
2555
+ @property --radix-collapsible-content-height {
2556
+ syntax: '<length>';
2557
+ inherits: false;
2558
+ initial-value: 0px;
2559
+ }
2546
2560
  @layer base {
2547
2561
  body {
2548
2562
  display: flex;
@@ -2894,6 +2908,10 @@
2894
2908
  syntax: "*";
2895
2909
  inherits: false;
2896
2910
  }
2911
+ @property --tw-drop-shadow {
2912
+ syntax: "*";
2913
+ inherits: false;
2914
+ }
2897
2915
  @property --tw-backdrop-blur {
2898
2916
  syntax: "*";
2899
2917
  inherits: false;
@@ -408,7 +408,7 @@ export const DEFAULT = {
408
408
  },
409
409
  'a:not([data-card])': {
410
410
  color: 'var(--tw-prose-links)',
411
- transition: 'text-decoration .2s',
411
+ transition: 'opacity .2s',
412
412
  fontWeight: '500',
413
413
  textDecoration: 'underline',
414
414
  textUnderlineOffset: '3.5px',
@@ -416,7 +416,7 @@ export const DEFAULT = {
416
416
  textDecorationThickness: '1.5px',
417
417
  },
418
418
  'a:not([data-card]):hover': {
419
- textDecorationThickness: '3px',
419
+ opacity: '80%',
420
420
  },
421
421
  },
422
422
  colors,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fumadocs-ui",
3
- "version": "15.0.10",
3
+ "version": "15.0.12",
4
4
  "description": "The framework for building a documentation website in Next.js",
5
5
  "keywords": [
6
6
  "NextJs",
@@ -67,21 +67,21 @@
67
67
  "lucide-react": "^0.475.0",
68
68
  "next-themes": "^0.4.4",
69
69
  "postcss-selector-parser": "^7.1.0",
70
- "react-medium-image-zoom": "^5.2.13",
70
+ "react-medium-image-zoom": "^5.2.14",
71
71
  "tailwind-merge": "^3.0.1"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@next/eslint-plugin-next": "^15.1.7",
75
- "@tailwindcss/cli": "^4.0.6",
75
+ "@tailwindcss/cli": "^4.0.7",
76
76
  "@types/lodash.merge": "^4.6.9",
77
77
  "@types/react": "^19.0.10",
78
78
  "@types/react-dom": "^19.0.4",
79
79
  "next": "15.1.7",
80
- "tailwindcss": "^4.0.6",
80
+ "tailwindcss": "^4.0.7",
81
81
  "tsc-alias": "^1.8.10",
82
82
  "@fumadocs/cli": "0.0.8",
83
83
  "eslint-config-custom": "0.0.0",
84
- "fumadocs-core": "15.0.10",
84
+ "fumadocs-core": "15.0.12",
85
85
  "tsconfig": "0.0.0"
86
86
  },
87
87
  "peerDependencies": {
@@ -89,7 +89,7 @@
89
89
  "react": "18.x.x || 19.x.x",
90
90
  "react-dom": "18.x.x || 19.x.x",
91
91
  "tailwindcss": "^3.4.14 || ^4.0.0",
92
- "fumadocs-core": "15.0.10"
92
+ "fumadocs-core": "15.0.12"
93
93
  },
94
94
  "peerDependenciesMeta": {
95
95
  "tailwindcss": {